(57)【特許請求の範囲】
【請求項１】
容量可変メモリと、前記容量可変メモリに対する１ビットの読み出し／書き込みを制御するプロセッサとを具備し、
前記容量可変メモリは、
複数の基本単位を有し、各基本単位が１つのセルトランジスタと１つの抵抗変化素子を備えるメモリセルアレイと、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの２ｎ個（ｎは整数）に対して行う第１のモード、及び、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの２ｍ個（ｍは整数、かつ、ｎ≠ｍ）に対して行う第２のモードを、選択的に切り替えるモードセレクタと、前記第１及び第２のモードの切り替えを制御する制御回路とを備え、
前記プロセッサは、
タグ情報を記憶するタグメモリと、前記第１及び第２のモードの切り替えを決定するコントローラとを備え、
前記タグ情報は、
前記１ビットの前記読み出し／書き込みを前記第１及び第２のモードのいずれで行ったかを示すモード情報を含み、
前記プロセッサは、
前記タグ情報に基づいて前記１ビットが前記容量可変メモリ内に記憶されているか否かを確認し、かつ、前記１ビットが前記容量可変メモリ内に記憶されているとき、前記モード情報に基づいて、前記１ビットを前記第１及び第２のモードのうちの１つを用いて読み出し、
前記第１のモードにおいて、前記２ｎ個の第１の基本単位内に、前記１ビットとしての第１のビットが記憶され、前記２ｎ個の第２の基本単位内に、前記１ビットとしての第２のビットが記憶されているとき、前記第２のモードにおいて、前記２ｍ個の前記第１及び第２の基本単位内に、前記第１のビットが記憶され、前記２ｎ個の第２の基本単位内に記憶されていた前記第２のビットが消去され、前記第１及び第２のビットに関する前記タグ情報は、前記タグメモリ内にゴースト情報としてそのまま記憶される、
但し、２ｍ＝２ｎ×２の関係を有する
プロセッサシステム。
【請求項２】
第１のモードから第２のモードへの切り替えは、
Ｎhit-B＜β×Ｎhit-A
の条件式を満たすときに行われ、
第２のモードから第１のモードへの切り替えは、
Ｎhit-B＞β×Ｎhit-A
の条件式を満たすときに行われる、
但し、Ｎhit-Aは、前記第１のビットのアクセス頻度、Ｎhit-Bは、前記第２のビットのアクセス頻度、βは、前記第１及び第２のビットのアクセス頻度の差を決める値である
請求項１に記載のプロセッサシステム。
【請求項３】
前記プロセッサは、前記Ｎhit-A及びＮhit-Bをカウントするカウンターを備え、かつ、前記第１及び第２のビットに対するアクセスが発生したとき、前記タグ情報（前記ゴースト情報としての前記タグ情報を含む）に基づいて前記Ｎhit-A及びＮhit-Bの値を更新する
請求項２に記載のプロセッサシステム。
【請求項４】
前記容量可変メモリ内に記憶される前記第１及び第２のビットを含む複数のビットは、アップデートの新旧の順序でＭＲＵ側からＬＲＵ側に並べられ、かつ、
前記第２のモードにおいて消去される前記２ｎ個の第２の基本単位内に記憶されていた前記第２のビットは、前記第１のビットよりもＬＲＵ側にあるビットである
請求項１に記載のプロセッサシステム。
【請求項５】
前記プロセッサは、アプリケーション及び動作フェーズに応じて、前記第１及び第２のモードの切り替えを前記容量可変メモリに指示する請求項１に記載のプロセッサシステム。
【請求項６】
前記容量可変メモリは、複数のセットを有するメモリマクロを備え、かつ、
前記プロセッサは、前記メモリマクロ又は前記複数のセットのうちの１つに対して、前記第１及び第２のモードの切り替えを指示する
請求項１に記載のプロセッサシステム。
【請求項７】
前記プロセッサは、前記第１及び第２のモードの切り替えに応じて、前記容量可変メモリのウェイ数を変化させる請求項１に記載のプロセッサシステム。
【請求項８】
前記容量可変メモリは、Ｌ２キャッシュとして使用される請求項１に記載のプロセッサシステム。
【請求項９】
前記第１のモードは、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの１個の基本単位に対して行い、かつ、
前記モードセレクタは、前記第１のモードのときに、リファレンス電位、及び、前記１個の基本単位により決まる読み出し電位を、それぞれ、センスアンプに転送する
請求項１に記載のプロセッサシステム。
【請求項１０】
前記第２のモードは、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの２個の基本単位に対して行い、
前記２個の基本単位は、相補データを記憶し、かつ、
前記モードセレクタは、前記第２のモードのときに、前記２個の基本単位の１つにより決まる第１の読み出し電位、及び、前記２個の基本単位の他の１つにより決まる第２の読み出し電位を、それぞれ、センスアンプに転送する
請求項１に記載のプロセッサシステム。
【請求項１１】
前記第１のモードは、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの２個の基本単位に対して行い、
前記２個の基本単位は、相補データを記憶し、かつ、
前記モードセレクタは、前記第１のモードのときに、前記２個の基本単位の１つにより決まる第１の読み出し電位、及び、前記２個の基本単位の他の１つにより決まる第２の読み出し電位を、それぞれ、センスアンプに転送する
請求項１に記載のプロセッサシステム。
【請求項１２】
前記第２のモードは、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの４個の基本単位に対して行い、
前記４個の基本単位のうちの第１及び第２の基本単位は、相補データを記憶し、
前記４個の基本単位のうちの第３及び第４の基本単位は、相補データを記憶し、かつ、
前記モードセレクタは、前記第２のモードのときに、前記第１及び第３の基本単位により決まる第１の読み出し電位、及び、前記第２及び第４の基本単位により決まる第２の読み出し電位を、それぞれ、センスアンプに転送する
請求項１に記載のプロセッサシステム。
【請求項１３】
前記１つのセルトランジスタと前記１つの抵抗変化素子は、直列接続され、かつ、前記１つの抵抗変化素子は、ＭＴＪ素子である請求項１に記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、プロセッサシステムに関する。
【背景技術】
【０００２】
例えば、磁気ランダムアクセスメモリ（ＭＲＡＭ）をキャッシュメモリとして使用することにより、低消費電力プロセッサを実現しようとする試みが検討されている。しかし、磁気ランダムアクセスメモリは、従来のキャッシュメモリであるスタティックランダムアクセスメモリ（ＳＲＡＭ）と比べると、動作速度が遅い。そこで、磁気ランダムアクセスメモリにおいて、高速動作を実現するためのセル構成が検討されている。
【０００３】
また、近年、モバイル製品などに使用されるプロセッサにおいては、低消費電力に加えて高性能化が著しく進んでおり、実行しているアプリケーションに応じて、キャッシュメモリに要求される性能も異なるのが実情である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2011-192345号公報
【特許文献２】特開2007-323706号公報
【特許文献３】米国特許出願公開2011/0063897号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実施形態は、メモリ容量を再構成可能な容量可変メモリを備えるプロセッサシステムを提案する。
【課題を解決するための手段】
【０００６】
実施形態によれば、プロセッサシステムは、容量可変メモリと、前記容量可変メモリに対する１ビットの読み出し／書き込みを制御するプロセッサとを具備し、容量可変メモリは、複数の基本単位を有し、各基本単位が１つのセルトランジスタと１つの抵抗変化素子を備えるメモリセルアレイと、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの２ｎ個（ｎは整数）に対して行う第１のモード、及び、前記１ビットの前記読み出し／書き込みを前記複数の基本単位のうちの２ｍ個（ｍは整数、かつ、ｎ≠ｍ）に対して行う第２のモードを、選択的に切り替えるモードセレクタと、前記第１及び第２のモードの切り替えを制御する制御回路とを備え、前記プロセッサは、タグ情報を記憶するタグメモリと、前記第１及び第２のモードの切り替えを決定するコントローラとを備え、前記タグ情報は、前記１ビットの前記読み出し／書き込みを前記第１及び第２のモードのいずれで行ったかを示すモード情報を含み、前記プロセッサは、前記タグ情報に基づいて前記１ビットが前記容量可変メモリ内に記憶されているか否かを確認し、かつ、前記１ビットが前記容量可変メモリ内に記憶されているとき、前記モード情報に基づいて、前記１ビットを前記第１及び第２のモードのうちの１つを用いて読み出し、前記第１のモードにおいて、前記２ｎ個の第１の基本単位内に、前記１ビットとしての第１のビットが記憶され、前記２ｎ個の第２の基本単位内に、前記１ビットとしての第２のビットが記憶されているとき、前記第２のモードにおいて、前記２ｍ個の前記第１及び第２の基本単位内に、前記第１のビットが記憶され、前記２ｎ個の第２の基本単位内に記憶されていた前記第２のビットが消去され、前記第１及び第２のビットに関する前記タグ情報は、前記タグメモリ内にゴースト情報としてそのまま記憶される。但し、２ｍ＝２ｎ×２の関係を有する。
【図面の簡単な説明】
【０００７】
【図１】１Ｔ−１ＭＴＪタイプＳＴＴ−ＭＲＡＭを示す図。
【図２】図１のセンスアンプを示す図。
【図３】読み出し電流とアクセスタイムの関係を示す図。
【図４】２Ｔ−２ＭＴＪタイプＳＴＴ−ＭＲＡＭを示す図。
【図５】図２のセンスアンプを示す図。
【図６】容量可変ＳＴＴ−ＭＲＡＭの全体構成を示す図。
【図７】容量可変ＳＴＴ−ＭＲＡＭのセル構成の切り替え部を示す図。
【図８】図７のＭＲＡＭの動作原理を示す図。
【図９】プロセッサシステムを示す図。
【図１０】モード変更のフローを示す図。
【図１１】セル構成とウェイ数の関係を示す図。
【図１２】セット、ブロック、及び、メモリマクロの関係を示す図。
【図１３】最適容量予測の原理を示す図。
【図１４】適応容量制御のハードウェア構成を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら実施形態を説明する。
【０００９】
１．  概要  
以下の実施例では、メモリ容量（又は動作速度）を選択的に変えることができる容量可変メモリを提案する。メモリ容量の変化は、１ビットを記憶するためのセル構成を変える（再構成する）ことにより実現するため、容量可変メモリは、セル構成可変メモリと称することもできる。以下に説明する容量可変メモリは、主に、抵抗変化素子にデータを記憶する不揮発メモリに関する。但し、以下では、説明を容易化するため、例えば、キャッシュメモリへの適用が最も有力視されているSpin Transfer Torque（ＳＴＴ）−ＭＲＡＭの実施例について説明する。
【００１０】
以下で説明するメモリ容量（又はセル構成）を再構成可能なＳＴＴ−ＭＲＡＭは、容量可変ＳＴＴ−ＭＲＡＭと称する。容量可変ＳＴＴ−ＭＲＡＭは、例えば、Advanced perpendicular magnetic tunnel junction（Advanced p-MTJ）をメモリ素子とし、同一の回路構成（１つのチップ）により、即ち、再設計を行うことなく、小容量から大容量までのアプリケーションに対応可能という特徴を有する。
【００１１】
また、以下の実施例では、容量可変ＳＴＴ−ＭＲＡＭを用いた適応容量制御（ＡＳＣ：Adaptive storage control）キャッシュアーキテクチャについても提案する。この適応容量制御キャッシュアーキテクチャによれば、上述の容量可変ＳＴＴ−ＭＲＡＭの特徴を最大限に活用することが可能である。
【００１２】
本実施例で提案する内容は、主に下記の３点である。
【００１３】
第一に、容量可変ＳＴＴ−ＭＲＡＭの設計（回路構成）について提案する。  
一般的に、ＭＲＡＭは、メモリ容量と動作速度とがトレードオフの関係にある。これに対し、容量可変ＳＴＴ−ＭＲＡＭでは、アプリケーションに応じて、メモリ容量及び動作速度を選択的に変えることができるため、消費電力の削減と高性能化とを同時に実現可能である。
【００１４】
例えば、容量可変ＳＴＴ−ＭＲＡＭをＬ２キャッシュメモリに適用するときは、Operating system（ＯＳ）により最適なキャッシュ容量を選択する。即ち、現在、実行しているアプリケーションが動作速度（レイテンシー）を重視するときは、容量可変ＳＴＴ−ＭＲＡＭのキャッシュ容量を減少させ、動作速度を向上させる。一方、現在、実行しているアプリケーションがキャッシュ容量を重視するときは、容量可変ＳＴＴ−ＭＲＡＭのキャッシュ容量を増加させる。
【００１５】
このように、容量可変ＳＴＴ−ＭＲＡＭは、動作速度を重視するアプリケーションとキャッシュ容量を重視するアプリケーションの両方に効果を発揮する。
【００１６】
第二に、容量可変ＳＴＴ−ＭＲＡＭを最大限に活用する適応容量制御キャッシュアーキテクチャを提案する。
【００１７】
容量可変ＳＴＴ−ＭＲＡＭは、現在、実行しているアプリケーションに応じて、最適なキャッシュ容量を選択することにより、キャッシュメモリとしてのパフォーマンスを最大化することができる。即ち、そのアプリケーションにおいて、キャッシュメモリへのアクセスパターンを判定し、それに基づいて、キャッシュ容量を選択する。
【００１８】
例えば、キャッシュメモリへのアクセスパターンから数種類の動作フェーズを設定し、これら動作フェーズの遷移に伴いキャッシュ容量を動的に変更する適応容量制御キャッシュアーキテクチャを提案する。
【００１９】
第三に、アプリケーション内で使用される変数によりメモリアクセスのパターンが異なる点に着目し、キャッシュメモリのアドレスに応じてキャッシュ容量を変える手法を提案する。
【００２０】
これは、所定のタグアドレスに対してアクセスが集中すると、スラッシングによるラッシュが発生することを考慮したものである。これを防ぐために、アプリケーションのセット毎にキャッシュメモリのウェイ数（Way number）を可変にし、セット毎のアクセスパターンに応じた最適なウェイ数を選択する。
【００２１】
例えば、動作速度（レイテンシー）を重視するセットにおいては、キャッシュ容量を小さくし、高速なメモリアクセスを実現する。一方、キャッシュ容量を重視するセットにおいては、キャッシュ容量を大きくする。
【００２２】
ここで、動作速度を重視するとは、キャッシュ容量を小さくしても、キャッシュメモリ内に、アクセスするデータが存在する確率（ヒット確率）が大きく、かつ、メインメモリとしてＤＲＡＭからデータを取得するときに生じるレイテンシーペナルティー（動作速度の低下）を、キャッシュメモリ内にアクセスするデータが存在しないミスペナルティーよりも重視する、という意味である。
【００２３】
即ち、小容量のキャッシュメモリのヒット確率が大きいときは、メインメモリにアクセスすることがほとんどないため、キャッシュメモリの動作速度を最大にすることが、結果として、システム全体の高速動作に貢献する。
【００２４】
また、メモリ容量（キャッシュ容量）を重視するとは、キャッシュ容量を小さくすると、キャッシュメモリ内に、アクセスするデータが存在しない確率（ミス確率）が大きく、キャッシュメモリ内にアクセスするデータが存在しないミスペナルティー（動作速度の低下）を、キャッシュメモリとしてＭＲＡＭの動作速度を低下させなければならないというレイテンシーペナルティーよりも重視する、という意味である。
【００２５】
即ち、小容量のキャッシュメモリのミス確率が大きいときは、キャッシュメモリの動作速度を落としても、キャッシュ容量を最大にすることが、メインメモリへのアクセスをなくすことに繋がるため、結果として、システム全体の高速動作に貢献する。
【００２６】
２．  読み出し速度のシミュレーション  
本例では、ＳＴＴ−ＭＲＡＭの回路構成と読み出し速度とを説明する。
【００２７】
図１は、１Ｔ−１ＭＴＪタイプＳＴＴ−ＭＲＡＭのメモリセルアレイの例を示し、図２は、図１のメモリセルアレイからデータを読み出すときに使用されるセンスアンプの例を示している。
【００２８】
メモリセルＭＣは、セルトランジスタ（ＦＥＴ）Ｔ及びＭＴＪ素子Ｒを備える。
【００２９】
セルトランジスタＴのゲートは、ワード線ＷＬｉ（ｉ＝０〜ｎのうちの１つ）に接続される。メモリセルＭＣは、ビット線ＢＬｊとソース線ＳＬｊ（ｊ＝０〜７のうちの１つ）との間に接続される。カラムセレクタ１は、カラム選択信号ＣＳＬに基づいて、８カラムＣＯＬ０〜ＣＯＬ７のうちの１つを選択する。選択された１つのカラムＣＯＬｊ内のビット線ＢＬｊは、センスアンプ２に電気的に接続される。
【００３０】
センスアンプ２は、ビット線ＢＬｊの電位とリファレンス電位Ｒｅｆとを比較し、選択されたメモリセルＭＣのデータを判定し、読み出しデータＯｕｔを出力する。センスアンプ２は、初期化回路（プリチャージ／イコライズ回路）３により初期化される。制御信号ＳＥ１が“Ｌ”のとき、センスアンプ２が初期化され、制御信号ＳＥ２が“Ｈ”のとき、センスアンプ２が活性化される。
【００３１】
本例では、選択されたメモリセルＭＣが接続されるワード線ＷＬｉに、リファレンスセルＲＣ内のセルトランジスタＴが接続される。リファレンスセルＲＣは、パラレル状態（Ｐ）のＭＴＪ素子ＲＰとアンチパラレル状態（ＡＰ）のＭＴＪ素子ＲＡＰを備えることにより、リファレンス電位Ｒｅｆを生成する。
【００３２】
このようなＳＴＴ−ＭＲＡＭにおいて、ダイナミック電力を削減するためには、読み出し電力を削減する必要がある。しかし、読み出し電力を削減するために読み出し電流Ｉｒを小さくすると、読み出し速度が低下する（読み出し遅延が増加する）。
【００３３】
読み出し電流と読み出し遅延の関係を調べるために、図１及び図２の回路を用いてシミュレーションを行った。その結果を図３に示す。
【００３４】
図３において、横軸は、読み出し電流、縦軸は、リードアクセスタイムである。読み出し電流は、アンチパラレル状態のＭＴＪ素子からデータを読み出す場合を示している。また、リードアクセスタイムは、選択されたワード線が電源電位の半分（Ｖｄｄ／２）になってから、センスアンプがデータを出力するまでの時間とする。
【００３５】
また、パラメータとして、１本のビット線に接続されるメモリセル数（ビット数）を採用した。本例では、１本のビット線に接続されるメモリセル数（アレイ構造）は、１２８ビット、２５６ビット、５１２ビット、及び、１０２４ビットの４通りとした。
【００３６】
ＳＰＩＣＥを用いた回路レベルのシミュレーションによれば、２ｎｓのリードアクセスタイムを実現するためには、１２８ビット、２５６ビット、５１２ビット、及び、１０２４ビットの４通りのアレイ構造に対して、それぞれ、８μＡ、１３μＡ、２０μＡ、５０μＡの読み出し電流が必要であった。
【００３７】
この結果から分かることは、アレイ構造が大きくなるにつれて、所定の読み出し速度を維持するための読み出し電流が大きくなる、ということである。これは、所定の読み出し速度を維持するために、１本のビット線に接続可能なメモリセル数に上限が存在することを意味する。これは、即ち、面積ペナルティーに繋がる。
【００３８】
数メガバイトクラスの容量を持つメモリマクロを備えるＭＲＡＭにおいては、面積効率が重要な設計基準であるため、面積効率を向上させるためには、設計ルールが許す範囲内で、セルトランジスタを可能な限り最小サイズで設計することが重要である。
【００３９】
図４は、２Ｔ−２ＭＴＪタイプＳＴＴ−ＭＲＡＭのメモリセルアレイの例を示し、図５は、図４のメモリセルアレイからデータを読み出すときに使用されるセンスアンプの例を示している。
【００４０】
メモリセルＭＣは、２つのセルトランジスタ（ＦＥＴ）Ｔ０，Ｔ１及び２つのＭＴＪ素子Ｒ０，Ｒ１を備える。
【００４１】
セルトランジスタＴ０，Ｔ１のゲートは、ワード線ＷＬｉ（ｉ＝０〜ｎのうちの１つ）に接続される。メモリセルＭＣは、ビット線ＢＬｊ／ｂＢＬｊとソース線ＳＬｊ／ｂＳＬｊ（ｊ＝０〜３のうちの１つ）との間に接続される。カラムセレクタ１は、カラム選択信号ＣＳＬに基づいて、４カラムＣＯＬ０〜ＣＯＬ３のうちの１つを選択する。選択された１つのカラムＣＯＬｊ内のビット線ＢＬｊは、センスアンプ２に電気的に接続される。
【００４２】
センスアンプ２は、ビット線ＢＬｊの電位とビット線ｂＢＬｊの電位とを比較し、選択されたメモリセルＭＣのデータを判定し、読み出しデータＯｕｔを出力する。センスアンプ２は、初期化回路（プリチャージ／イコライズ回路）３により初期化される。制御信号ＳＥ１が“Ｌ”のとき、センスアンプ２が初期化され、制御信号ＳＥ２が“Ｈ”のとき、センスアンプ２が活性化される。
【００４３】
本例では、１つのメモリセルＭＣ内の２つのＭＴＪ素子Ｒ０，Ｒ１に相補データを記憶する。即ち、２つのＭＴＪ素子Ｒ０，Ｒ１の一方をパラレル状態（例えば、低抵抗状態）とし、他方をアンチパラレル状態（例えば、高抵抗状態）とする。これにより、読み出し時には、ビット線ＢＬｊの電位とビット線ｂＢＬｊの電位とを比較する差動読み出しが可能になり、図１及び図２に示すアレイ構造に比べて、高速な読み出し動作を実現することができる。
【００４４】
しかし、１ビットを記憶するために必要なメモリセルのサイズが、図１及び図２のアレイ構造のメモリセルのサイズの２倍となるため、キャッシュ容量を大きくするには不利である。また、読み出しマージンの向上によるリードアクセスタイムの向上が図れる反面、読み出し時に、２つのＭＴＪ素子Ｒ０，Ｒ１に読み出し電流を流す必要があるため、読み出し電流が大きくなる。
【００４５】
３．  基本構成  
図６は、容量可変ＳＴＴ−ＭＲＡＭの全体構成を示している。
【００４６】
メモリセルアレイ１０は、複数のＭＴＪ素子（メモリセル）のアレイを備える。ロウデコーダ１１ａ及びカラムデコーダ１１ｂは、アドレス信号Addに基づいて、メモリセルアレイ１０内のＭＴＪ素子をランダムアクセスする。
【００４７】
カラムセレクタ１Ａは、カラムデコーダ１１ｂからの信号に基づいて、メモリセルアレイ１０とセンスアンプ２とを互いに電気的に接続する役割を有する。モードセレクタ１Ｂは、１ビット（データ）の書き込み／読み出しを行う基本単位（セル構成）を変化させる役割を有する。センスアンプ２は、メモリセルアレイ１０からデータＯｕｔを読み出すときに使用される。
【００４８】
制御回路１４は、ロウデコーダ１１ａ、カラムデコーダ１１ｂ、モードセレクタ１Ｂ、及び、センスアンプ２の動作を制御する。例えば、制御回路１４は、キャッシュコントローラ（ＣＰＵ）の制御の下で、以下で説明する適応容量制御を行う。
【００４９】
尚、カラムセレクタ１Ａとモードセレクタ１Ｂの位置関係は、逆でもよい。
【００５０】
図７は、容量可変ＳＴＴ−ＭＲＡＭのセル構成の切り替え部を示している。
【００５１】
メモリセルアレイは、セルトランジスタＴ０，Ｔ１，Ｔ２，Ｔ３及びＭＴＪ素子Ｒ０，Ｒ１，Ｒ２，Ｒ３を備える。
【００５２】
セルトランジスタＴ０，Ｔ１のゲートは、ワード線ＷＬ０に接続され、セルトランジスタＴ２，Ｔ３のゲートは、ワード線ＷＬ１に接続される。セルトランジスタＴ０，Ｔ１，Ｔ２，Ｔ３は、それぞれ、ＭＴＪ素子Ｒ０，Ｒ１，Ｒ２，Ｒ３に直列接続される。
【００５３】
セルトランジスタＴ０，Ｔ２は、ビット線ＢＬ０に接続され、ＭＴＪ素子Ｒ０，Ｒ２は、ソース線ＳＬ０に接続される。セルトランジスタＴ１，Ｔ３は、ビット線ＢＬ１に接続され、ＭＴＪ素子Ｒ１，Ｒ３は、ソース線ＳＬ１に接続される。
【００５４】
ビット線ＢＬ０，ＢＬ１は、カラムセレクタ１Ａを経由して、モードセレクタ１Ｂ（ＳＥＬ０，ＳＥＬ１）に接続される。
【００５５】
リファレンスセルＲＣは、セルトランジスタＴｄを備える。また、リファレンスセルＲＣは、並列接続されるパラレル状態（Ｐ）のＭＴＪ素子ＲＰとアンチパラレル状態（ＡＰ）のＭＴＪ素子ＲＡＰを備える。セルトランジスタＴｄは、ダミービット線ＤＢＬに接続され、ＭＴＪ素子ＲＰ，ＲＡＰは、ダミーソース線ＤＳＬに接続される。
【００５６】
ダミービット線ＤＢＬは、モードセレクタ１Ｂ（ＳＥＬ０，ＳＥＬ１）に接続される。
【００５７】
モードセレクタＳＥＬ０は、制御信号φ０に基づいて、ビット線ＢＬ０の電位ＶＢＬ０及びダミービット線ＤＢＬのリファレンス電位Ｒｅｆのうちの１つを、センスアンプ２に転送する。また、モードセレクタＳＥＬ１は、制御信号φ１に基づいて、ビット線ＢＬ１の電位ＶＢＬ１及びダミービット線ＤＢＬのリファレンス電位Ｒｅｆのうちの１つを、センスアンプ２に転送する。
【００５８】
センスアンプ２は、モードセレクタＳＥＬ０の出力とモードセレクタＳＥＬ１の出力とを比較し、選択されたメモリセルＭＣのデータを判定し、読み出しデータＯｕｔを出力する。センスアンプ２は、初期化回路（プリチャージ／イコライズ回路）３により初期化される。制御信号ＳＥ１が“Ｌ”のとき、センスアンプ２が初期化され、制御信号ＳＥ２が“Ｈ”のとき、センスアンプ２が活性化される。
【００５９】
このような容量可変ＳＴＴ−ＭＲＡＭによれば、例えば、図８に示すように、メモリセルＭＣの構成（動作モード）を、（ａ）１Ｔ−１ＭＴＪセル、（ｂ）２Ｔ−２ＭＴＪセル、及び、（ｃ）４Ｔ−４ＭＴＪセルのうちから１つを選択することが可能である。
【００６０】
これら３つの動作モードは、１ビットを記憶するために必要なメモリセルのサイズが異なるため、読み出し速度（読み出し遅延）も、各モードで異なる。各モードの比較を表１に示す。
【表１】
0005492324.tif 000002
【００６１】
１Ｔ−１ＭＴＪセルモードでは、リードメカニズムとしてリファレンス電位Ｒｅｆを使用する（with reference）。これに対し、２Ｔ−２ＭＴＪセルモード、及び、４Ｔ−４ＭＴＪセルモードでは、リードメカニズムとして差動読み出しを採用するため、リファレンス電位Ｒｅｆを使用しない（without reference）。
【００６２】
表１は、１Ｔ−１ＭＴＪセルモードでの読み出し電流を１とし、４Ｔ−４ＭＴＪセルモードでのメモリ容量（セルサイズに反比例）を１としたときの比較結果である。
【００６３】
１Ｔ−１ＭＴＪセルモードでは、メモリセルのサイズが最小であるため、メモリ容量としては、４Ｔ−４ＭＴＪセルモードの４倍である。しかし、読み出し電流が小さいため、センスマージンは低い（Low）。
【００６４】
４Ｔ−４ＭＴＪセルモードでは、メモリセルのサイズが最大で、読み出し電流が大きいため、センスマージンは高い（High）。しかし、メモリセルのサイズが大きいため、メモリ容量としては、１Ｔ−１ＭＴＪセルモードの１／４倍である。
【００６５】
２Ｔ−２ＭＴＪセルモードでは、１Ｔ−１ＭＴＪセルモードと４Ｔ−４ＭＴＪセルモードとの中間の性質を有する。即ち、メモリ容量としては、４Ｔ−４ＭＴＪセルモードの２倍であり、センスマージンは中間である（Middle）。
【００６６】
これらのモードを、例えば、キャッシュコントローラにより、現在、実行しているアプリケーションに応じて変化させる。これにより、ＭＲＡＭキャッシュにおける低消費電力と高性能化とを両立することができる。
【００６７】
尚、本例では、セル構成（動作モード）を、（ａ）１Ｔ−１ＭＴＪセル、（ｂ）２Ｔ−２ＭＴＪセル、及び、（ｃ）４Ｔ−４ＭＴＪセルの３つとしたが、これに限られることはない。例えば、これら以外のセル構成、例えば、６Ｔ−６ＭＴＪセル、８Ｔ−８ＭＴＪセルなどのｘＴ−ｘＭＴＪセル（ｘは偶数）を採用してもよい。また、モードの数についても、３つに限られない。モードの数は、２つ以上であればよい。
【００６８】
以下、上述の３つのモードにおける動作を詳細に説明する。
【００６９】
（ａ）１Ｔ−１ＭＴＪセルモード  
このモードでは、読み出し時、例えば、ワード線（選択ワード線）ＷＬ０は、“Ｈ”に設定され、ワード線（非選択ワード線）ＷＬ１は、“Ｌ”に設定される。ビット線（選択ビット線）ＢＬ０は、“Ｈ”に設定され、ビット線（非選択ビット線）ＢＬ１は、“Ｌ”に設定される。ソース線ＳＬ０，ＳＬ１は、共に、“Ｌ”に設定される。
【００７０】
モードセレクタＳＥＬ０は、ビット線ＢＬ０の電位ＶＢＬ０を選択し、電位ＶＢＬ０をセンスアンプ２に転送する。モードセレクタＳＥＬ１は、リファレンス電位Ｒｅｆを選択し、リファレンス電位Ｒｅｆをセンスアンプ２に転送する。読み出し電流Ｉｒは、選択されたメモリセルＭＣ内の１つのＭＴＪ素子Ｒ０に流れる。
【００７１】
１Ｔ−１ＭＴＪセルモードは、上述の３つのモードの中でセル密度が最も高くなるモードである。読み出し動作は、例えば、アクセスの対象となるメモリセル（選択されたメモリセル）ＭＣに流れる読み出し電流Ｉｒと、リファレンスセルに流れるリファレンス電流との差を増幅することにより行われる。
【００７２】
リファレンスセルは、既に述べたように、例えば、パラレル状態（Ｐ）のスピンを持つ低抵抗ＭＴＪ素子ＲＰと、アンチパラレル状態（ＡＰ）のスピンを持つ高抵抗ＭＴＪ素子ＲＡＰとを、並列接続した構成を有する。即ち、低抵抗ＭＴＪ素子ＲＰと高抵抗ＭＴＪ素子ＲＡＰとにより生成される抵抗値ｒｒｅｆは、低抵抗ＭＴＪ素子ＲＰの抵抗値ｒＰと高抵抗ＭＴＪ素子ＲＡＰの抵抗値ｒＡＰの半分（ｒＰ＋ｒＡＰ）／２である。
【００７３】
ここで、読み出しマージンは、磁気抵抗比（ＭＲ比）ＲＡ、即ち、（ｒＡＰ−ｒＰ）／ｒＰによって定まる。しかし、１Ｔ−１ＭＴＪセルモードでは、選択されたメモリセル内のＭＴＪ素子の抵抗値ｒＰ又はｒＡＰと、リファレンスセル内のＭＴＪ素子の抵抗値ｒｒｅｆ＝（ｒＰ＋ｒＡＰ）／２とを比較するため、実質的なＭＲ比は、ＲＡの半分になる。
【００７４】
従って、このモードでは、ＳＲＡＭに比べて、読み出し遅延が非常に大きくなってしまう。一方、キャッシュ容量（メモリ容量）については、セル密度がＳＲＡＭの約４倍となるため、ＳＲＡＭの約４倍のキャッシュ容量を実現することが可能である。
【００７５】
（ｂ）２Ｔ−２ＭＴＪセルモード  
このモードでは、読み出し時、例えば、ワード線（選択ワード線）ＷＬ０は、“Ｈ”に設定され、ワード線（非選択ワード線）ＷＬ１は、“Ｌ”に設定される。ビット線（選択ビット線）ＢＬ０，ＢＬ１は、共に、“Ｈ”に設定される。ソース線ＳＬ０，ＳＬ１は、共に、“Ｌ”に設定される。
【００７６】
モードセレクタＳＥＬ０は、ビット線ＢＬ０の電位ＶＢＬ０を選択し、電位ＶＢＬ０をセンスアンプ２に転送する。モードセレクタＳＥＬ１は、ビット線ＢＬ１の電位ＶＢＬ１を選択し、電位ＶＢＬ１をセンスアンプ２に転送する。読み出し電流Ｉｒは、選択されたメモリセルＭＣ内の２つのＭＴＪ素子Ｒ０，Ｒ１に流れる。
【００７７】
２Ｔ−２ＭＴＪセルモードは、１ビットのデータを、２つのＭＴＪ素子Ｒ０，Ｒ１に相補データとして記憶する。即ち、センスアンプ２は、２つのＭＴＪ素子Ｒ０，Ｒ１の一方（高抵抗状態）に流れる電流と、他方（低抵抗状態）に流れる電流とを比較すること（差動読み出し）により、選択されたメモリセルＭＣに記憶されたデータを判定する。このため、リファレンスセルは不要である。
【００７８】
このモードは、１Ｔ−１ＭＴＪセルモードに比べて、キャッシュ容量（メモリ容量）が半分になるが、それでも、ＳＲＡＭに比べて、約２倍のキャッシュ容量を実現することが可能である。また、リファレンスセルを使用せずに読み出し動作を行うため、１Ｔ−１ＭＴＪセルモードに比べて、読み出しマージンが２倍になり、かつ、高速読み出しが可能になる。さらに、リファレンスセルを使用しないことから、１Ｔ−１ＭＴＪセルモードに比べて、読み出し時のダイナミック電力が小さいという特徴を有する。
【００７９】
（ｃ）４Ｔ−４ＭＴＪセルモード  
このモードでは、読み出し時、例えば、ワード線（選択ワード線）ＷＬ０，ＷＬ１は、共に、“Ｈ”に設定される。ビット線（選択ビット線）ＢＬ０，ＢＬ１は、共に、“Ｈ”に設定される。ソース線ＳＬ０，ＳＬ１は、共に、“Ｌ”に設定される。
【００８０】
モードセレクタＳＥＬ０は、ビット線ＢＬ０の電位ＶＢＬ０を選択し、電位ＶＢＬ０をセンスアンプ２に転送する。モードセレクタＳＥＬ１は、ビット線ＢＬ１の電位ＶＢＬ１を選択し、電位ＶＢＬ１をセンスアンプ２に転送する。読み出し電流Ｉｒは、選択されたメモリセルＭＣ内の４つのＭＴＪ素子Ｒ０，Ｒ１，Ｒ２，Ｒ３に流れる。
【００８１】
４Ｔ−４ＭＴＪセルモードは、高速読み出しを実現するためのモードである。高速読み出しを行うために、１ビットのデータを４つＭＴＪ素子Ｒ０，Ｒ１，Ｒ２，Ｒ３を用いて記憶する。読み出し時には、２本のワード線ＷＬ０，ＷＬ１を立ち上げる。読み出し電流Ｉｒは、センスアンプ２から、４つの電流パスを経由して、ソース線ＳＬ０，ＳＬ１)に流れる。
【００８２】
従って、このモードでは、読み出し電流は、２Ｔ−２ＭＴＪセルモードに比べて、２倍になるため、高速読み出しが可能になる。しかし、読み出し電流が増えるため、読み出し時のダイナミック電力は増加する。また、１ビットのデータを４つＭＴＪ素子Ｒ０，Ｒ１，Ｒ２，Ｒ３を用いて記憶するため、セル密度は、１Ｔ−１ＭＴＪセルモードの１／４となる。即ち、キャパシタ容量は、ＳＲＡＭとほぼ同じになる。
【００８３】
４．  動作メカニズム（タグメモリの更新）  
本例では、上述の容量可変ＳＴＴ−ＭＲＡＭをＬ２キャッシュメモリに使用したときの動作メカニズムについて述べる。
【００８４】
図９は、プロセッサシステムを示している。
【００８５】
プロセッサ４は、現在、実行しているアプリケーションで使用されるデータをキャッシュメモリとしてのＭＲＡＭ５に一時的に記憶させる。また、プロセッサ４は、そのデータがキャッシュメモリとしてのＭＲＡＭ５のどこに記憶されているかを示すアドレス情報やその履歴を記憶するタグメモリ（ＲＡＭ）６を備える。
【００８６】
プロセッサ４は、ＭＲＡＭ５に対してデータを要求するときに、タグメモリ６を参照し、要求されるデータがＭＲＡＭ５内に記憶されている（ヒット）ことを確認した後に、ＭＲＡＭ５からデータを読み出す。タグメモリ６を参照した結果、要求されるデータがＭＲＡＭ５内に記憶されていないときは（ミス）、例えば、メインメモリとしてのＤＲＡＭからデータを読み出す。
【００８７】
ここで、上述の容量可変ＳＴＴ−ＭＲＡＭでは、複数のセル構成（動作モード）のうちから、現在、実行しているアプリケーションに最適な１つのモードを選択する。従って、ＭＲＡＭ５に対する書き込み／読み出しを制御するプロセッサ４は、データが複数のモードのうちのどのモードでＭＲＡＭ５内に記憶されているかを知る必要がある。
【００８８】
このため、例えば、プロセッサ４内のタグメモリ６内に、ＭＲＡＭ５に記憶されたデータのモード情報、例えば、上述の（ａ）１Ｔ−１ＭＴＪセルモード、（ｂ）２Ｔ−２ＭＴＪセルモード、（ｃ）４Ｔ−４ＭＴＪセルモードのうちのどのモードで記憶されたか、を追加で記憶させる。
【００８９】
また、このモード情報は、モードが変更されると、更新される。
【００９０】
表２に、タグメモリ６内に記憶させる情報の例を示す。
【表２】
0005492324.tif 000003
【００９１】
本例では、タグメモリ６内に、アドレス情報、セキュリティ情報、有効／無効情報、ダーティ情報、モード情報、及び、ＬＲＵ(least resent update)情報を記憶させる。
【００９２】
アドレス情報は、データがＭＲＡＭ５内に記憶されていることを示す情報である。本例では、アドレス情報は、１８ビットであるが、このビット数は、メモリセルアレイ内の１ウェイのサイズに応じて変化する。
【００９３】
セキュリティ情報（１ビット）は、例えば、ＯＳで保護されているか否かを示す情報のことである。有効／無効情報（１ビット）は、アドレス情報が有効か又は無効かを示す情報である。即ち、アドレス情報が有効であるとは、ＭＲＡＭ５内に実際にデータが記憶されていることを意味する。また、アドレス情報が無効であるとは、ＭＲＡＭ５内にデータが記憶されていたが、キャッシュラインからの追い出しにより、現在は、ＭＲＡＭ５内にデータが記憶されていないこと（履歴情報又はゴースト情報）を意味する。
【００９４】
ダーティ情報（１ビット）は、キャッシュメモリとしてのＭＲＡＭ５内において更新されたデータが、例えば、メインメモリとしてのＤＲＡＭに反映されているかを示す情報である。更新データがメインメモリに反映されていないときは、所定の時期に、更新データをメインメモリに反映させる処理を行う。
【００９５】
モード情報は、上述の容量可変ＳＴＴ−ＭＲＡＭを有効にするために新たに設けた情報である。例えば、容量可変ＳＴＴ−ＭＲＡＭのセル構成（動作モード）が、上述の（ａ）１Ｔ−１ＭＴＪセルモード、（ｂ）２Ｔ−２ＭＴＪセルモード、（ｃ）４Ｔ−４ＭＴＪセルモードの３つである場合には、表２に示すように、２ビットのモード情報を設ける。
【００９６】
モード情報のビット数は、再構成可能なセル構成の数により変化する。再構成可能なセル構成の数が２ｙ通り以下の場合には、ｙビットのモード情報により、データが２ｙ通り以下のモードのうちのどのモードでＭＲＡＭ５内に記憶されたかを知ることができる。
【００９７】
ＬＲＵポジション情報は、ＭＲＡＭ５内に記憶されたデータの新旧を知るための情報である。キャッシュメモリとしてのＭＲＡＭ５内には、常に新しいデータが記憶されるため、使用頻度が少ない古いデータについては、順次、ＭＲＡＭ５から削除（追い出し）をする必要がある。そこで、ＬＲＵポジション情報により、データの新旧の相対的な位置を把握する。
【００９８】
尚、ＭＲＡＭ５内に記憶された時期が古いデータのことを、ＬＲＵ側のデータといい、ＭＲＡＭ５内に記憶された時期が新しいデータのことを、ＭＲＵ（most recent update）側のデータという。
【００９９】
そして、プロセッサ４内のキャッシュコントローラ（ＣＰＵ）７は、タグメモリ６の情報、例えば、ＭＲＡＭ５内のメモリセルアレイのセット毎に設定されたセル構成又はモードに基づいて、ＭＲＡＭ５に対するデータアクセスを制御する。
【０１００】
また、カウンター８は、例えば、後述する適応容量制御、即ち、モード選択の判定条件となる各ビットに対するアクセス回数をカウントする。
【０１０１】
図１０は、ＭＲＡＭにデータアクセスするときのフローを示している。
【０１０２】
まず、要求されるデータがＬ１キャッシュメモリ内に存在しないとき（L1 miss）、Ｌ２キャッシュメモリとしてのＭＲＡＭ内にそのデータが存在するか否かを、タグメモリを参照することにより確認する（ステップＳＴ１： L2 tag access）。
【０１０３】
Ｌ２キャッシュメモリとしてのＭＲＡＭ内に、要求されるデータが存在すると判明したときは（ヒット）、タグメモリ内のモード情報に基づいて、そのデータをＭＲＡＭ内に記憶させたときのモードをチェックする（ステップＳＴ３〜ＳＴ４）。
【０１０４】
そして、モード情報に基づいて、例えば、図８に示すように、読み出し方式を切り替えることにより、Ｌ２キャッシュメモリとしてのＭＲＡＭからデータを読み出す（ステップＳＴ５： L2 data access）。
【０１０５】
一方、Ｌ２キャッシュメモリとしてのＭＲＡＭ内に、要求されるデータが存在しないと判明したときは（L2 miss）、そのデータが過去にＭＲＡＭ内に記憶されたことがあるデータであるか否かをチェックする処理（Ghost hit）などを行った後、メインメモリからデータを読み出す。
【０１０６】
５．  適応容量制御（ＡＳＣ：Adaptive storage control）  
本例では、上述の容量可変ＳＴＴ−ＭＲＡＭを最大限に活用するために、適応容量制御について説明する。適応容量制御は、容量可変ＳＴＴ−ＭＲＡＭへのアクセスパターンを予測するカウンターを用いることにより、現在、実行しいているアプリケーションに応じて、容量可変ＳＴＴ−ＭＲＡＭのキャッシュ容量を変化させる。
【０１０７】
本例では、２レベルのキャッシュ階層を想定する。Ｌ１キャッシュメモリとしては、ＳＲＡＭを使用し、Ｌ２キャッシュメモリとしては、上述の容量可変ＳＴＴ−ＭＲＡＭを使用する。容量可変ＳＴＴ−ＭＲＡＭにおいては、メモリ容量（キャッシュ容量）と動作速度（レイテンシー）とがトレードオフの関係にある。
【０１０８】
このため、メモリ容量を大きくすると、動作速度が遅くなる。また、メモリ容量が大きいため、Ｌ２キャッシュメモリ内にデータが存在しない確率（ミス率）が低下する。これに対し、メモリ容量を小さくすると、動作速度が速くなる。また、メモリ容量が小さいため、Ｌ２キャッシュメモリ内にデータが存在しない確率が増加する。
【０１０９】
ところで、ラストレベルキャッシュＬＬＣにおいてキャッシュミスが発生すると、オフチップのメインメモリにアクセスし、メインメモリからデータを取得しなければならないため、消費電力の面からも、また、レイテンシーの面からも、重大なペナルティーとなる。従って、Ｌ２キャッシュメモリとしてのＭＲＡＭにおいて、最適なキャッシュ容量を選択することにより、このようなペナルティーを回避し、システム全体のキャッシュ性能を最大化することが可能となる。
【０１１０】
図１１は、セル構成（動作モード）とウェイ数の例を示している。
【０１１１】
セル構成とウェイ数は、例えば、キャッシュコントローラ（ＣＰＵ）により制御される。ここで、ウェイ数とは、ＭＲＡＭキャッシュの１ブロックサイズに対応させるキャッシュラインの数を意味する。ウェイ数が多いほどデータの競合が少なく、ヒット率が高くなる。即ち、ミスペナルティーが減少する。
【０１１２】
１Ｔ−１ＭＴＪセルモードにおいて４ウェイのとき、例えば、２Ｔ−２ＭＴＪセルモードでは、２ウェイに変更し、４Ｔ−４ＭＴＪセルモードでは、１ウェイに変更する。
【０１１３】
このように、適応容量制御を行うことにより、キャッシュメモリとしてのパフォーマンスを最大化することができる。
【０１１４】
尚、例えば、図１２に示すように、メモリマクロ内のセット毎にＭＲＡＭ（キャッシュメモリ）のウェイ数を可変にし、セット毎のアクセスパターンに応じた最適なウェイ数を選択することが可能である。
【０１１５】
６．  適応容量制御のための最適容量予測  
適応容量制御は、例えば、現在、実行しているアプリケーションに応じて、自動的に最適なＬ２キャッシュサイズを確定する。そのアプリケーションのＭＲＡＭキャッシュへのアクセス傾向を予測するために、例えば、カウンターを導入する。
【０１１６】
モードの変更は、“キャッシュ容量の拡大（Expanding）”と“キャッシュ容量の縮小（Shrinking）”の２つに分類される。モードの変更のフローを図１３に示す。“キャッシュ容量の拡大”を行う基準は、次の不等式が成立したときである。
【０１１７】
キャッシュ容量を拡大するメリット ＞ キャッシュ容量を拡大するデメリット  
キャッシュ容量を拡大するメリットの大きさを示す指標として、“Avoidable misses × L2 miss penalty”を挙げることができる。また、キャッシュ容量を拡大するデメリットの大きさを示す指標として、“Current hits × Expanding hit penalty”を挙げることができる。
【０１１８】
ここで、“Avoidable misses”とは、キャッシュ容量を拡大することで回避できるミスの回数を表す。“L2 miss penalty”は、Ｌ２キャッシュメモリ（ＭＲＡＭ）でのミスにより発生するメインメモリへのアクセスによって生じる動作遅延とエネルギーを表す。
【０１１９】
また、“Current hits”とは、キャッシュ容量を拡大することで増加するヒットの回数を表す。“Expanding hit penalty”は、キャッシュ容量を拡大することで増加するヒット時の動作遅延とエネルギーを表す。
【０１２０】
尚、“L2 miss penalty”とExpanding hit penaltyは、プロセッサの構成によって変化する。
【０１２１】
表３にプロセッサの構成例を示す。
【表３】
0005492324.tif 000004
【０１２２】
本例では、ＭＲＡＭ（Ｌ２キャッシュメモリ）は、１Ｔ−１ＭＴＪセルモード、２Ｔ−２ＭＴＪセルモード、及び、４Ｔ−４ＭＴＪセルモードのうちの１つを選択する。ウェイ数は、セット毎に変更可能であり（set associative）、書き込みレイテンシーは、１６サイクルであり、ブロックサイズは、６４バイトである。また、ＭＲＡＭキャッシュ内においてデータの更新があっても、直ちに、これをメインメモリに反映させないライトバック方式を採用する。
【０１２３】
・  １Ｔ−１ＭＴＪセルモード（Slow mode）  
メモリ容量は、２メガバイト、ウェイ数は、１６ウェイ、読み出しレイテンシー（hit latency）は、１８サイクルである。
【０１２４】
・  ２Ｔ−２ＭＴＪセルモード（Middle mode）  
メモリ容量は、１メガバイト、ウェイ数は、８ウェイ、読み出しレイテンシー（hit latency）は、１５サイクルである。
【０１２５】
・  ４Ｔ−４ＭＴＪセルモード（Fast mode）  
メモリ容量は、５１２キロバイト、ウェイ数は、４ウェイ、読み出しレイテンシー（hit latency）は、１３サイクルである。
【０１２６】
これに対し、メインメモリとしてのＤＲＡＭでは、例えば、メモリ容量は、２ギガバイト、読み出しレイテンシーは、１００サイクルである。
【０１２７】
ここで、ＭＲＡＭキャッシュにおける１８／１５／１３サイクルのレイテンシー（動作遅延）は、“Expanding hit penalty”に含まれる。また、メインメモリにおける１００サイクルのレイテンシー（動作遅延）は、“L2 miss penalty”に含まれる。
【０１２８】
以下、最適なＬ２キャッシュサイズを決定する例を、図１３に基づき説明する。
【０１２９】
ここでは、例えば、カウンターを用いて、Ｎｈｉｔ−Ａ、Ｎｈｉｔ−Ｂ、及び、Ｎｈｉｔ−Ｃをカウントし、１Ｔ−１ＭＴＪセルモード（Slow mode）、２Ｔ−２ＭＴＪセルモード（Middle mode）、４Ｔ−４ＭＴＪセルモード（Fast mode）のうちの１つを選択する例を説明する。
【０１３０】
図１３において、□で表記される領域Ａ，Ｂ，Ｃ１，Ｃ２は、１つのデータを記憶するための基本単位を意味する。
【０１３１】
Ｎｈｉｔ−Ａは、４つの領域Ａ，Ｂ，Ｃ１，Ｃ２のうち、ＭＲＵ（Most recent update）側の１つの領域Ａに対するアクセス頻度を表している。Ｎｈｉｔ−Ｂは、４つの領域Ａ，Ｂ，Ｃ１，Ｃ２のうち、ＭＲＵ側から２つめに存在する１つの領域Ｂに対するアクセス頻度を表している。Ｎｈｉｔ−Ｃは、４つの領域Ａ，Ｂ，Ｃ１，Ｃ２のうち、ＬＲＵ（Least recent update）側の２つの領域Ｃ１，Ｃ２に対するアクセス頻度を表している。
【０１３２】
但し、アクセス頻度とは、例えば、一定時間内におけるアクセス回数を意味する。また、Ｎｈｉｔ−Ｃについては、２つの領域Ｃ１，Ｃ２のアクセス頻度の平均値又は合計値を意味する。
【０１３３】
・  “１Ｔ−１ＭＴＪセルモード”から“２Ｔ−２ＭＴＪセルモード”への変更  
１Ｔ−１ＭＴＪセルモードでは、４つの領域Ａ，Ｂ，Ｃ１，Ｃ２にそれぞれ異なるデータが記憶される。この状態において、例えば、Ｎｈｉｔ−Ｃ＜α×（Ｎｈｉｔ−Ａ＋Ｎｈｉｔ−Ｂ）を満たしたときは、キャッシュコントローラ（ＣＰＵ）により、１Ｔ−１ＭＴＪセルモードから２Ｔ−２ＭＴＪセルモードに変更する。即ち、キャッシュ容量（メモリ容量）を縮小する（shrinking）。
【０１３４】
この条件式は、２つの領域Ａ，Ｂのアクセス頻度（α×（Ｎｈｉｔ−Ａ＋Ｎｈｉｔ−Ｂ））が、２つの領域Ｃ１，Ｃ２のアクセス頻度（Ｎｈｉｔ−Ｃ）よりも高いため、キャッシュ容量を縮小するメリット（２つの領域Ａ，Ｂに記憶されたデータのレイテンシーの向上）が、キャッシュ容量を縮小するデメリット（２つの領域Ｃ１，Ｃ２に記憶されていたデータをメインメモリからアクセスするときのアクセスタイムの増加）よりも大きい、ということを意味する。
【０１３５】
ここで、条件式中のαは、メリットとデメリットのどちらが勝っているかを判断するための指標であり、具体的には、２つの領域Ａ，Ｂのアクセス頻度と２つの領域Ｃ１，Ｃ２のアクセス頻度との差を決める値である。この値は、プロセッサシステム、又は、そのシステム内で実行するアプリケーションの種類などによって決定される。
【０１３６】
・  “２Ｔ−２ＭＴＪセルモード”から“４Ｔ−４ＭＴＪセルモード”への変更  
２Ｔ−２ＭＴＪセルモードでは、実質的に２つの領域Ａ，Ｂにそれぞれ異なるデータが記憶される。例えば、２つの領域Ａ，Ｃ１に１つのデータ（相補データ）が記憶され、２つの領域Ｂ，Ｃ２に１つのデータ（相補データ）が記憶される。
【０１３７】
即ち、２Ｔ−２ＭＴＪセルモードでは、１Ｔ−１ＭＴＪセルモードで２つの領域Ｃ１，Ｃ２に記憶されていたデータが消去されている。但し、１Ｔ−１ＭＴＪセルモードで２つの領域Ｃ１，Ｃ２に記憶されていたデータに関する情報は、履歴（ゴースト情報）として、タグメモリ内に引き続き記憶されている。
【０１３８】
この状態において、例えば、Ｎｈｉｔ−Ｂ＜β×Ｎｈｉｔ−Ａを満たしたときは、キャッシュコントローラ（ＣＰＵ）により、２Ｔ−２ＭＴＪセルモードから４Ｔ−４ＭＴＪセルモードに変更する。即ち、キャッシュ容量（メモリ容量）を縮小する（shrinking）。
【０１３９】
この条件式は、１つの領域Ａのアクセス頻度（β×Ｎｈｉｔ−Ａ）が、１つの領域Ｂのアクセス頻度（Ｎｈｉｔ−Ｂ）よりも高いため、キャッシュ容量を縮小するメリット（１つの領域Ａに記憶されたデータのレイテンシーの向上）が、キャッシュ容量を縮小するデメリット（１つの領域Ｂに記憶されていたデータをメインメモリからアクセスするときのアクセスタイムの増加）よりも大きい、ということを意味する。
【０１４０】
ここで、条件式中のβは、メリットとデメリットのどちらが勝っているかを判断するための指標であり、具体的には、１つの領域Ａのアクセス頻度と１つの領域Ｂのアクセス頻度との差を決める値である。この値は、プロセッサシステム、又は、そのシステム内で実行するアプリケーションの種類などによって決定される。
【０１４１】
・  “４Ｔ−４ＭＴＪセルモード”から“２Ｔ−２ＭＴＪセルモード”への変更  
４Ｔ−４ＭＴＪセルモードでは、実質的に１つの領域Ａにデータが記憶される。例えば、２つの領域Ａ，Ｃ１に１つのデータ（相補データ）が記憶され、かつ、そのデータと同じデータ（相補データ）が２つの領域Ｂ，Ｃ２に記憶される。
【０１４２】
即ち、４Ｔ−４ＭＴＪセルモードでは、１Ｔ−１ＭＴＪセルモードで２つの領域Ｃ１，Ｃ２に記憶されていたデータ及び２Ｔ−２ＭＴＪセルモードで１つの領域Ｂに記憶されていたデータがそれぞれ消去されている。但し、これらの３つの領域Ｂ，Ｃ１，Ｃ２に記憶されていたデータに関する情報は、履歴（ゴースト情報）として、タグメモリ内に引き続き記憶されている。
【０１４３】
この状態において、例えば、Ｎｈｉｔ−Ｂ＞β×Ｎｈｉｔ−Ａを満たしたときは、キャッシュコントローラ（ＣＰＵ）により、４Ｔ−４ＭＴＪセルモードから２Ｔ−２ＭＴＪセルモードに変更する。即ち、キャッシュ容量（メモリ容量）を拡大する（expanding）。
【０１４４】
この条件式は、１つの領域Ａのアクセス頻度（β×Ｎｈｉｔ−Ａ）が、１つの領域Ｂのアクセス頻度（Ｎｈｉｔ−Ｂ）よりも低いため、キャッシュ容量を拡大するメリット（２つの領域Ａ，Ｂのデータをキャッシュメモリからアクセス可能になることによるアクセスタイムの短縮）が、キャッシュ容量を拡大するデメリット（２つの領域Ａ，Ｂに記憶されるデータのレイテンシーの低下）よりも大きい、ということを意味する。
【０１４５】
ここで、条件式中のβは、メリットとデメリットのどちらが勝っているかを判断するための指標であり、具体的には、１つの領域Ａのアクセス頻度と１つの領域Ｂのアクセス頻度との差を決める値である。この値は、プロセッサシステム、又は、そのシステム内で実行するアプリケーションの種類などによって決定される。
【０１４６】
・  “２Ｔ−２ＭＴＪセルモード”から“１Ｔ−１ＭＴＪセルモード”への変更  
２Ｔ−２ＭＴＪセルモードでは、実質的に２つの領域Ａ，Ｂにそれぞれ異なるデータが記憶される。例えば、２つの領域Ａ，Ｃ１に１つのデータ（相補データ）が記憶され、２つの領域Ｂ，Ｃ２に１つのデータ（相補データ）が記憶される。
【０１４７】
即ち、２Ｔ−２ＭＴＪセルモードでは、１Ｔ−１ＭＴＪセルモードで２つの領域Ｃ１，Ｃ２に記憶されていたデータが消去されている。但し、これらの２つの領域Ｃ１，Ｃ２に記憶されていたデータに関する情報は、履歴（ゴースト情報）として、タグメモリ内に引き続き記憶されている。
【０１４８】
この状態において、例えば、Ｎｈｉｔ−Ｃ＞α×（Ｎｈｉｔ−Ａ＋Ｎｈｉｔ−Ｂ）を満たしたときは、キャッシュコントローラ（ＣＰＵ）により、２Ｔ−２ＭＴＪセルモードから１Ｔ−１ＭＴＪセルモードに変更する。即ち、キャッシュ容量（メモリ容量）を拡大する（expanding）。
【０１４９】
この条件式は、２つの領域Ａ，Ｂのアクセス頻度（α×（Ｎｈｉｔ−Ａ＋Ｎｈｉｔ−Ｂ））が、２つの領域Ｃ１，Ｃ２のアクセス頻度（Ｎｈｉｔ−Ｃ）よりも低いため、キャッシュ容量を拡大するメリット（４つの領域Ａ，Ｂ，Ｃ１，Ｃ２のデータをキャッシュメモリからアクセス可能になることによるアクセスタイムの短縮）が、キャッシュ容量を拡大するデメリット（４つの領域Ａ，Ｂ，Ｃ１，Ｃ２に記憶されるデータのレイテンシーの低下）よりも大きい、ということを意味する。
【０１５０】
ここで、条件式中のαは、メリットとデメリットのどちらが勝っているかを判断するための指標であり、具体的には、２つの領域Ａ，Ｂのアクセス頻度と２つの領域Ｃ１，Ｃ２のアクセス頻度との差を決める値である。この値は、プロセッサシステム、又は、そのシステム内で実行するアプリケーションの種類などによって決定される。
【０１５１】
このように、ＭＲＡＭキャッシュに対する過去のアクセスパターン、即ち、Ｎｈｉｔ−Ａ、Ｎｈｉｔ−Ｂ、及び、Ｎｈｉｔ−Ｃの大小関係に基づいて、モードの選択／変更（キャッシュ容量の変更）を行う。
【０１５２】
７．  適応容量制御のハードウェア構成  
図１４は、適応容量制御のハードウェア構成の例を示している。
【０１５３】
タグメモリ（タグアレイ）は、例えば、ＳＲＡＭであり、データメモリ（データアレイ）は、例えば、容量可変ＳＴＴ−ＭＲＡＭ（ＭＲＡＭキャッシュ）である。タグメモリは、既に述べたように、通常のタグデータに加えて、容量可変ＳＴＴ−ＭＲＡＭに、どのモードでデータが記憶されているかを示すモード情報を記憶する。
【０１５４】
タグメモリにおいて、□で表記される領域Ａ，Ｂ，Ｃ１，Ｃ２は、ＭＲＡＭキャッシュに記憶された１つのデータのタグ情報を記憶するためのメモリ領域を意味する。ｎは、Ａ，Ｂ，Ｃ１，Ｃ２のうちの１つを意味している。
【０１５５】
ノーマル（Normal）とは、有効データが記憶される１つの領域、又は、有効データが記憶される複数の領域のうち、過去から継続してその有効データを記憶している１つの領域を意味する。また、ゴースト（Ghost）とは、有効データが記憶される複数の領域のうち、過去に有効データ以外のデータを記憶していた１つ又は複数の領域を意味する。
【０１５６】
本例では、３つの領域Ｂ，Ｃ１，Ｃ２がゴーストとなり得る。
【０１５７】
ＭＲＡＭキャッシュにおいて、□で表記される領域ｗ，ｘ，ｙ，ｚは、１つのデータを記憶するためのメモリ領域を意味する。ｂｘは、領域ｘに記憶されたデータの反転データが記憶されることを意味し、ｂｙは、領域ｙに記憶されたデータの反転データが記憶されることを意味する。
【０１５８】
ＭＲＡＭキャッシュにおいて、数値０〜１５は、それぞれ、データを意味する。ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７は、それぞれ、データ０，１，２，３，４，５，６，７の反転データを意味する。タグメモリにおいて、数値０〜１５は、それぞれ、データ０〜１５のタグデータを意味する。
【０１５９】
容量可変ＳＴＴ−ＭＲＡＭのモードは、メモリセルアレイ（メモリ領域）の全てにおいて同時に変化させることも可能であるし、メモリセルアレイ内のセット毎（図１２参照）に変化させることも可能である。
【０１６０】
１Ｔ−１ＭＴＪセルモードでは、例えば、データメモリ（ＭＲＡＭ）内の１６個の領域内に、データ０〜１５が記憶される。これに対応して、タグメモリ内の１６個の領域内に、データ０〜１５のタグデータ０〜１５が記憶される。
【０１６１】
２Ｔ−２ＭＴＪセルモードでは、例えば、データメモリ（ＭＲＡＭ）内の１６個の領域内に、データ０〜７，ｂ０〜ｂ７が記憶される。即ち、２つの領域内に、１つのデータ（相補データ）、例えば、０とｂ０、１とｂ１、２とｂ２、３とｂ３、４とｂ４、５とｂ５、６とｂ６、又は、７とｂ７が、記憶される。
【０１６２】
これに対応して、タグメモリ内の８個の領域内に、データ０〜７のタグデータ０〜７がノーマルデータとして記憶される。また、タグメモリ内の８個の領域内に、データ８〜１５のタグデータ８〜１５がゴーストデータとして記憶される。
【０１６３】
即ち、２Ｔ−２ＭＴＪセルモードでは、データメモリ内において、データ８〜１５が消去されるが、タグメモリ内において、データ８〜１５のタグデータ８〜１５は、ゴーストデータとしてそのまま保持される。
【０１６４】
４Ｔ−４ＭＴＪセルモードでは、例えば、データメモリ（ＭＲＡＭ）内の１６個の領域内に、データ０〜３，ｂ０〜ｂ３が記憶される。即ち、４つの領域内に、１つのデータ（相補データ×２）、例えば、（０とｂ０）×２、（１とｂ１）×２、（２とｂ２）×２、又は、（３とｂ３）×２が、記憶される。
【０１６５】
これに対応して、タグメモリ内の４個の領域内に、データ０〜３のタグデータ０〜３がノーマルデータとして記憶される。また、タグメモリ内の１２個の領域内に、データ４〜１５のタグデータ４〜１５がゴーストデータとして記憶される。
【０１６６】
即ち、４Ｔ−４ＭＴＪセルモードでは、データメモリ内において、データ４〜１５が消去されるが、タグメモリ内において、データ４〜１５のタグデータ４〜１５は、ゴーストデータとしてそのまま保持される。
【０１６７】
このように、タグメモリは、適応容量制御の動作モードに関わらず、１６個の領域内に記憶されていた１６個のデータ１〜１６の全てのタグデータ１〜１６を常に保持する。このため、このタグデータを参照することにより、図１３に示すＮｈｉｔ−Ａ、Ｎｈｉｔ−Ｂ、及び、Ｎｈｉｔ−Ｃを何時でもカウントすることができる。
【０１６８】
尚、本例のハードウェア構成は、例えば、データアレイの２行×２列の４つ領域ｗ，ｘ，ｙ，ｚ内でデータのマッピングを行うことにより、３つのモード（容量可変動作）を実現する。また、２つの領域ｗ，ｙ内のメモリセルは、互いに１本のワード線を共有し、２つの領域ｘ，ｚ内のメモリセルは、互いに１本のワード線を共有する。
【０１６９】
このような構成にすることにより、メモリセルアレイのセット毎に、メモリ容量を制御することが可能となる。
【０１７０】
ＭＲＡＭキャッシュの読み出し遅延のオーバーヘッドを隠蔽し、キャッシュミスのペナルティーを減らすためには、上述の適応容量制御が非常に有効である。ＭＲＡＭキャッシュへのアクセスパターンは、現在、実行しているアプリケーションに応じて変化し、さらに、同じベンチマークであっても、現在、実行しているフェーズによっても変化するからである。
【０１７１】
特に、予期しないスラッシングアクセスパターンや、ストリーミングアクセスパターンなどにより、キャッシュメモリ内のデータがメインメモリに反映されない状態（Dirty）が長く続くと、キャッシュメモリ内のデータ量が増加し、キャッシュミスが頻発する恐れが発生する。
【０１７２】
本例の適応容量制御によれば、例えば、セット毎に、容量可変ＳＴＴ−ＭＲＡＭのキャッシュ容量を可変にすることができるため、このようなキャッシュミスを減らすと共に、過剰なレイテンシーの増加を防ぐこともできる。
【０１７３】
８．  モードチェンジにおけるデータ入れ替えポリシー  
適応容量制御において、モードの変更は、電力と性能の両方の面でオーバーヘッドになり得る。キャッシュサイズ（キャッシュ容量）を拡大するときは、キャッシュコントローラは、冗長なデータを無効にするだけなので、スムーズにモード変更することができる。しかし、キャッシュサイズを縮小するときは、キャッシュメモリから有効データを退避させる必要があるため、大きな性能低下を招きかねない。
【０１７４】
そこで、キャッシュサイズを縮小するときは、キャッシュメモリ内のどのデータを退避させるか、を選択する必要がある。キャッシュサイズを縮小するとき（モードの変更時）のポリシーとしては、以下の２通りが考えられる。
【０１７５】
ポリシー１：  総当たりベースのデータ選択ポリシー  
データ入れ替えの対称となるセット内の全てのデータのうち、ＭＲＵ側にあるデータを残し、ＬＲＵ側にあるデータを破棄する。以下のトーナメントタイプよりもモードの変更に伴うペナルティーは大きくなるが、Ｌ２キャッシュのヒット数を高く維持することが可能である。
【０１７６】
データの破棄は、キャッシュサイズを縮小するという決定がなされた後に、セット内に残す有効データに対するアクセスが行われたときに行われる。即ち、そのアクセス時に、有効データを、破棄すべきデータに上書きすることにより、データの破棄が行われる。
【０１７７】
ポリシー２：  トーナメントタイプのデータ選択ポリシー  
データ入れ替えの対称となるセット内の全てのデータから１つのペアを構成する２つのデータを選択し、その２つのデータのうち、ＭＲＵ側にあるデータを残し、ＬＲＵ側にあるデータを破棄する。上述の総当たりベースよりもモードの変更に伴うペナルティーは小さくなるが、Ｌ２キャッシュのヒット数が劣化する可能性がある。
【０１７８】
データの破棄は、上述の総当たりベースと同様に、キャッシュサイズを縮小するという決定がなされた後に、セット内に残す有効データに対するアクセスが行われたときに行われる。即ち、そのアクセス時に、有効データを、破棄すべきデータに上書きすることにより、データの破棄が行われる。
【０１７９】
９．  静的適応制御(Static)  
本例では、容量可変ＳＴＴ−ＭＲＡＭを静的に制御した場合の性能について述べる。
【０１８０】
容量可変ＳＴＴ−ＭＲＡＭは、メモリ容量（大容量化）と動作速度（高速動作）の２つの性能のうち、どちらを優先するか、を選択することができる。容量可変ＳＴＴ−ＭＲＡＭのシンプルな使い方は、予め、実行する予定のあるアプリケーション毎にメモリアクセスパターンを分析しておき、それを元に容量可変ＳＴＴ−ＭＲＡＭの動作モードを変更する。
【０１８１】
例えば、Ｌ２キャッシュのヒットレイテンシーに敏感なアプリケーションに対しては、アクセスレイテンシーが最も短いモードを選択することにより、容量可変ＳＴＴ−ＭＲＡＭのヒットレイテンシーのオーバーヘッドを抑えることができる。また、Ｌ２キャッシュのミス回数に敏感なアプリケーションに対しては、キャッシュサイズを大きくするモードを選択することにより、Ｌ２キャッシュ内にデータが存在しないキャッシュミスを減らすことができる。
【０１８２】
ここでは、オペレーションシステム（ＯＳ）がＬ２キャッシュへのアクセスパターンに基づき、キャッシュコントローラ（ＣＰＵ）に対して容量可変ＳＴＴ−ＭＲＡＭの動作モードの変更を要求できると仮定する。
【０１８３】
この場合、例えば、Ｌ２キャッシュの容量を、４Ｔ−４ＭＴＪセルモードで５１２キロバイト、２Ｔ−２ＭＴＪセルモードで１メガバイト、１Ｔ−１ＭＴＪセルモードで２メガバイトという具合に、変更可能である。
【０１８４】
ほとんどのアプリケーションでは、Ｌ２キャッシュの容量を増やすことにより、ヒット率が向上し、かつ、ＣＰＵの命令実行効率（ＩＰＣ：Instruction per cycle）が向上する。しかし、いくつかのベンチマークでは、Ｌ２キャッシュのヒットレイテンシーが長くなってしまう影響で、ＣＰＵの命令実行効率ＩＰＣが逆に劣化してしまうものもある。
【０１８５】
このようなアプリケーションに対しては、適応容量制御により、キャッシュ容量が小さいモードを選択することにより、Ｌ２キャッシュの性能が改善される。また、ほとんどのベンチマークでは、Ｌ２キャッシュの容量を大きくすることにより、オフチップとしてのメインメモリ（例えば、ＤＲＡＭ）に対するアクセス回数が削減され、ＣＰＵの命令実行時の平均エネルギー（ＥＰＩ：Energy per instruction）を削減することができる。
【０１８６】
１０．  動的適応制御(Dynamic)  
Ｌ２キャッシュに対するアクセスパターンが、現在、実行しているアプリケーションに応じて変化することを、さらに効果的に活用するために、容量可変ＳＴＴ−ＭＲＡＭのモードの変更を、動的（適応的）に変えることを検討する。
【０１８７】
動的にモードを変更するポリシーとしては、以下の２通りが考えられる。
【０１８８】
ポリシー１：  時間粒度によるモードの変更  
Ｌ２キャッシュに対するアクセスパターンは、各ベンチマークで、刻一刻と変化する。このポリシーでは、キャッシュコントローラ（ＣＰＵ）に、例えば、メモリマクロ内の複数の領域の各々に対するアクセス回数を確認する機能を付加する。各領域のアクセス回数は、例えば、カウンターによりカウントする。
【０１８９】
そして、上述の適応容量制御のための最適容量予測により、例えば、セットよりも大きい単位であるメモリマクロ単位でモードを選択する。
【０１９０】
ポリシー２：  アドレス（空間）粒度によるモードの変更  
このポリシーは、例えば、セット毎に容量可変ＳＴＴ−ＭＲＡＭの容量を制御する。適応容量制御のための最適容量予測は、セット毎に行い、かつ、セット毎に動作モードを変更する。これにより、例えば、Ｌ２キャッシュ内の全セットのうち、アクセスが集中しているセットに対しては、モードの変更により、部分的にキャッシュ容量を増やすことができる。また、アクセスが集中していないセットでは、高速アクセス、即ち、動作遅延（レイテンシー）を短くできるモードを選択することができる。
【０１９１】
このポリシーでは、モードの変更に伴うオーバーヘッドが増える反面、上述のポリシー１に比べて、きめ細かい制御（モードの変更）が可能になる。
【０１９２】
尚、動的に適応容量制御を行ったときの性能のシミュレーション結果によると、アクセスが集中するアドレスに偏りのあるようなベンチマーク、例えば、“perl script”、“bzip2圧縮”、“gccコンパイル”、“Networkコントローラ”などでは、セット毎にモードの変更を行い、ＣＰＵの命令実行効率ＩＰＣを向上させるのが望ましい。
【０１９３】
また、オフチップとしてのメインメモリ（例えば、ＤＲＡＭ）にライトバック（write-back）するデータが存在するときは、Ｌ２キャッシュとしてのＳＴＴ−ＭＲＡＭのモードの変更が行われる度に、メインメモリにデータをライトバックするのが望ましい。
【０１９４】
例えば、“量子力学の計算”のような、アプリケーションの動作フェーズが頻繁に変わるようなベンチマークでは、モードの変更が短期間に度々行われる。このような場合には、モードの変更が行われるときに、メインメモリにデータをライトバックする。
【０１９５】
これは、ライトスルー（write-through）により、その都度、メインメモリに更新データを反映させると、エネルギーの増加を招き、ＣＰＵによる命令実行時の平均エネルギーＥＰＩを劣化させるからである。
【０１９６】
１１．  適用例  
上述の実施例に係わる磁気ランダムアクセスメモリは、例えば、低消費電力プロセッサのキャッシュメモリに適用することができる。
【０１９７】
近年、スマートフォンに代表されるような携帯機器に搭載されるプロセッサの高性能化が急速に進んでおり、モバイルアプリケーションであるにも関わらず、マルチコアプロセッサが主流になりつつある。一方、このような高性能モバイルプロセッサにおいて、バッテリーの駆動時間が短くなるという問題点が顕著に表れており、プロセッサの処理性能だけでなく、消費電力が重要な指標となっている。即ち、チップ面積の増加に伴い、消費電力の増大が懸念されている。
【０１９８】
従って、このような高性能モバイルプロセッサには、「最大のパフォーマンス」だけでなく、「最小の消費電力」が要求される。ここで、「最大のパフォーマンス」には、ストレスのない操作性、高性能なグラフィックなどが含まれ、「最小の消費電力」には、薄いボディ、低温度、長いバッテリー寿命などが含まれる。
【０１９９】
プロセッサの消費電力を効果的に削減する手法として、近年、注目されている技術に、Spin Transfer Torque（ＳＴＴ）−ＭＲＡＭをはじめとする不揮発メモリをプロセッサのキャッシュメモリとして利用する研究が注目されている。不揮発メモリは、電源が遮断された状態でデータを保持することができるためスタンバイ時の消費電力を“ゼロ”にすることが可能である。
【０２００】
不揮発メモリとして研究開発されている素子は、ＭＲＡＭ以外にも、Phase-change RAM (ＰＣＲＡＭ)、Resistive RAM (ＲｅＲＡＭ)、ＮＡＮＤフラッシュメモリなどが検討されている。しかし、これらの不揮発メモリの中でも、特に、ＳＴＴ−ＭＲＡＭが最も実用化に近い不揮発メモリとして注目されている。その理由は、ＳＲＡＭに匹敵する高速動作（＜１０ｎｓ）、高い書き換え耐性（＞１０１５回）や、低電力向けＣＭＯＳロジックプロセスとの高い親和性などがある。
【０２０１】
従って、上述の実施例に係わる磁気ランダムアクセスメモリは、このような高性能化と省電力化とを両立することが求められている高性能モバイルプロセッサに適用するのが有効と考えられる。
【０２０２】
１２．  むすび  
実施形態によれば、メモリ容量及び動作速度を再構成可能な磁気ランダムアクセスメモリを実現できる。
【０２０３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２０４】
１Ａ：  カラムセレクタ、  ２：  センスアンプ、  ３：  初期化回路、  ４：  プロセッサ、  ５：  ＭＲＡＭ、  ６：  タグメモリ、  ７：  キャッシュコントローラ、  ＭＣ：  メモリセル、  ＲＣ：  リファレンスセル、  Ｔ：  セルトランジスタ、  Ｒ：  ＭＴＪ素子、  １Ｂ，ＳＥＬ０，ＳＥＬ１：  モードセレクタ。
【要約】
【課題】メモリ容量を再構成可能な容量可変メモリを実現する。
【解決手段】実施形態に係わる容量可変メモリは、複数の基本単位を有し、各基本単位が１つのセルトランジスタＴ０と１つの抵抗変化素子Ｒ０を備えるメモリセルアレイと、１ビットの読み出し／書き込みを複数の基本単位のうちの２ｎ個（ｎは整数）に対して行う第１のモード、及び、１ビットの読み出し／書き込みを複数の基本単位のうちの２ｍ個（ｍは整数、かつ、ｎ≠ｍ）に対して行う第２のモードを、選択的に切り替えるモードセレクタ１Ｂと、第１及び第２のモードの切り替えを制御する制御回路とを備える。
【選択図】図７【図１】
0005492324.tif 000005
【図２】
0005492324.tif 000006
【図３】
0005492324.tif 000007
【図４】
0005492324.tif 000008
【図５】
0005492324.tif 000009
【図６】
0005492324.tif 000010
【図７】
0005492324.tif 000011
【図８】
0005492324.tif 000012
【図９】
0005492324.tif 000013
【図１０】
0005492324.tif 000014
【図１１】
0005492324.tif 000015
【図１２】
0005492324.tif 000016
【図１３】
0005492324.tif 000017
【図１４】
0005492324.tif 000018