(57)【特許請求の範囲】
【請求項１】
第１キャッシュメモリと、
アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、前記第１キャッシュメモリよりもアクセス優先度が低く前記第１キャッシュメモリの下位階層の第２キャッシュメモリと、
前記第１キャッシュメモリに対するアクセス状況に応じて、前記第２キャッシュメモリに格納すべき各データを前記複数の領域に分類して格納する制御を行うキャッシュコントローラと、を備えるキャッシュメモリシステム。
【請求項２】
前記キャッシュコントローラは、前記第１キャッシュメモリから前記第２キャッシュメモリにデータを追い出す際に、当該データの前記第１キャッシュメモリでのアクセス状況に応じて、当該データを前記複数の領域のいずれかに格納する請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記複数の領域は、第１領域と、前記第１領域よりもアクセス速度が低い第２領域と、を有し、
前記キャッシュコントローラは、前記第１領域に空き領域がなくなった場合には、前記第１領域に格納されている一部のデータを前記第２領域に移動させる請求項１または２に記載のキャッシュメモリシステム。
【請求項４】
前記複数の領域は、第１領域と、前記第１領域よりもアクセス速度が低い第２領域と、を有し、
前記キャッシュコントローラは、前記第１領域に格納されたデータの読出し要求があった場合には、当該データを前記第１領域から前記第２領域に移動させる請求項１または２に記載のキャッシュメモリシステム。
【請求項５】
前記複数の領域は、第１領域と、前記第１領域よりもアクセス速度が低い第２領域と、を有し、
前記第１キャッシュメモリに格納された各データのアクセス回数を計測する第１アクセス回数計測部を備え、
前記キャッシュコントローラは、
前記第１アクセス回数計測部で計測されたアクセス回数が所定の閾値を超えたデータを前記第１領域に格納し、前記閾値を超えなかったデータを前記第２領域に格納するリプレイス部と、を有する請求項１または２に記載のキャッシュメモリシステム。
【請求項６】
前記第１アクセス回数計測部は、前記第１キャッシュメモリのアクセス単位であるキャッシュラインごとに設けられる請求項５に記載のキャッシュメモリシステム。
【請求項７】
前記第１アクセス回数計測部は、アクセス回数が飽和値に達するまで、対応するキャッシュラインにアクセスがあるたびに計測値をインクリメントし、アクセス回数が飽和値に達した後、新たなアクセスが発生すると、飽和値に達した前記第１アクセス回数計測部以外の第１アクセス回数計測部の計測値をディクリメントする請求項６に記載のキャッシュメモリシステム。
【請求項８】
前記第２キャッシュメモリよりもアクセス優先度が低く前記第２キャッシュメモリの下位階層の第３キャッシュメモリと、
前記第２キャッシュメモリから次に追い出される可能性が最大のデータのアクセス回数を計測する第２アクセス回数計測部と、
前記第３キャッシュメモリから次に追い出される可能性が最小のデータのアクセス回数を計測する第３アクセス回数計測部と、を備え、
前記キャッシュコントローラは、前記第２アクセス回数計測部で計測されたアクセス回数と、前記第３アクセス回数計測部で計測されたアクセス回数と、に基づいて、前記複数の領域のメモリサイズを制御する請求項１乃至７のいずれかに記載のキャッシュメモリシステム。
【請求項９】
前記第２キャッシュメモリは、それぞれが複数のキャッシュラインを有する複数のウェイを有し、
前記キャッシュコントローラは、前記第２アクセス回数計測部で計測されたアクセス回数と、前記第３アクセス回数計測部で計測されたアクセス回数と、に基づいて、前記複数のウェイのそれぞれを前記複数の領域のいずれで使用するかを設定するウェイ数制御部を有する請求項８に記載のキャッシュメモリシステム。
【請求項１０】
前記第２キャッシュメモリは、
複数の構成単位を有し、各構成単位が１つのトランジスタと、１つの抵抗変化素子と、を有するメモリセルアレイと、
１ビットのデータの読出しおよび書込みに使用する前記構成単位の数を複数通りに切り替えて前記複数の領域として使用する領域選択部と、を有し、
前記キャッシュコントローラは、前記第１キャッシュメモリに対するアクセス状況に応じて、前記領域選択部を制御する請求項１乃至９のいずれか１項に記載のキャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発メモリを備えたキャッシュメモリシステムに関する。
【背景技術】
【０００２】
ＳＲＡＭ（Static Random Access Memory）は待機電力が大きく価格も高いことから、不揮発メモリを用いたキャッシュメモリが検討されている。不揮発メモリの中でも、ＭＲＡＭ（Magnetoresistive Random Access Memory）は、書換耐性が高く、セル面積も小さくて高集積化が可能であるが、アクセス速度の観点では、ＳＲＡＭには及ばない。一般に、アクセス速度とメモリ容量とはトレードオフの関係にあり、メモリ容量を増やせばアクセス速度が低下し、メモリ容量を減らせばアクセス速度が向上する。
【０００３】
例えば、ＭＲＡＭ等の不揮発メモリを下位側の階層のキャッシュメモリとして使用する場合、プロセッサが実行するアプリケーション・ソフトウェアによっては、このキャッシュメモリへのアクセスが集中的に行われ、ＳＲＡＭで構成する場合と比べて、処理性能が低下してしまうおそれがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７９１５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、不揮発メモリを用いても、アクセス速度が低下しないようにしたキャッシュメモリシステムを提供するものである。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の一態様では、第１キャッシュメモリと、
アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、前記第１キャッシュメモリよりもアクセス優先度が低く前記第１キャッシュメモリの下位階層の第２キャッシュメモリと、
前記第１キャッシュメモリに対するアクセス状況に応じて、前記第２キャッシュメモリに格納すべき各データを前記複数の領域に分類して格納する制御を行うキャッシュコントローラと、を備えるキャッシュメモリシステムが提供される。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態のキャッシュメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図。
【図２】Ｌ２キャッシュ５内のメモリセルアレイ２１の回路構成の一例を示す回路図。
【図３】Ｌ１内参照回数カウンタ９の計測動作の一例を示すフローチャート。
【図４】Ｌ１内参照回数カウンタ９の計測動作の他の一例を示すフローチャート。
【図５】Ｌ２キャッシュコントローラ１２が行う書込み制御の処理手順の一例を示すフローチャート。
【図６】読出し要求があった場合のＬ２キャッシュコントローラ１２の処理手順の一例を示すフローチャート。
【図７】Ｌ２キャッシュ５内の高速領域と低速領域のメモリ容量をウェイ単位で切替制御する処理手順の一例を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態について、詳細に説明する。
図１は本発明の一実施形態のキャッシュメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、８つのプロセッサコア（ＣＰＵ）３を有するマルチコアの構成を示しているが、プロセッサコア３の数には依存せず、シングルコアでもよい。
【０００９】
プロセッサシステム２内のキャッシュメモリシステム１は、１次キャッシュメモリ（以下、Ｌ１キャッシュ、第１キャッシュメモリ）４と、２次キャッシュメモリ（以下、Ｌ２キャッシュ、第２キャッシュメモリ）５と、３次キャッシュメモリ（以下、Ｌ３キャッシュ、第３キャッシュメモリ）６とを有する。Ｌ１キャッシュ４は最もアクセス優先度が高い最上位階層のキャッシュメモリである。Ｌ２キャッシュ５は、Ｌ１キャッシュ４の次にアクセス優先度が高い２番目の階層のキャッシュメモリである。Ｌ３キャッシュ６は、Ｌ２キャッシュ５の次にアクセス優先度が高い３番目の階層のキャッシュメモリである。Ｌ３キャッシュ６の下位階層には、不図示のキャッシュメモリが設けられていてもよいし、不図示のメインメモリが設けられていてもよい。
【００１０】
Ｌ１キャッシュ４は、プロセッサコア３ごとに設けられている。Ｌ２キャッシュ５は、図１の例では、２個のＬ１キャッシュ４ごとに設けられている。なお、Ｌ２キャッシュ５を何個のＬ１キャッシュ４ごとに設けるかは任意である。Ｌ３キャッシュ６は、図１の例では、８個のＬ２キャッシュ５に対して１個設けられている。なお、Ｌ３キャッシュ６を何個のＬ２キャッシュ５メモリごとに設けるかは任意である。
【００１１】
Ｌ１キャッシュ４は、Ｌ１データメモリおよびＬ１タグメモリ（Ｌ１＄）７と、Ｌ１キャッシュコントローラ８とを有する。Ｌ１キャッシュコントローラ８は、Ｌ１内参照回数カウンタ（第１アクセス回数計測部）９を有する。
【００１２】
Ｌ１キャッシュ４は、例えば３２ｋバイトのメモリ容量を有する。Ｌ１データメモリおよびＬ１タグメモリ７は例えばＳＲＡＭで構成されている。
【００１３】
Ｌ１内参照回数カウンタ９は、Ｌ１キャッシュ４のキャッシュラインごとに設けられている。Ｌ１内参照回数カウンタ９は、対応するキャッシュラインへのアクセスがあるたびにカウントアップするカウンタである。
【００１４】
Ｌ２キャッシュ５は、Ｌ２データメモリおよびＬ２タグメモリ（Ｌ２＄）１１と、Ｌ２キャッシュコントローラ１２とを有する。Ｌ２キャッシュコントローラ１２は、ＬＲＵアクセス回数カウンタ（第２アクセス回数計測部）１３と、ウェイ数制御部１４と、Ｌ２リプレイス部１５とを有する。
【００１５】
Ｌ２キャッシュ５は、例えば２５６ｋバイトのメモリ容量を有する。Ｌ２データメモリは、ＳＴＴ（Spin Transfer Torque）−ＭＲＡＭ等の不揮発メモリで構成されている。Ｌ２タグメモリは、例えばＳＲＡＭで構成されている。
【００１６】
Ｌ２データメモリは、後述するように、高速アクセスが可能な高速領域と、高速領域よりもアクセス速度が低い低速領域とを有する。高速領域と低速領域は、Ｌ２データメモリ内の固定の場所にそれぞれ割り当ててもよいし、高速領域と低速領域の場所を、Ｌ２データメモリ内でシフトできるようにしてもよい。また、後述するように、高速領域と低速領域のメモリサイズを任意に可変制御できるようにしてもよい。
【００１７】
ＬＲＵアクセス回数カウンタ１３は、Ｌ２キャッシュ５中のデータのうち、次に追い出される可能性が最大のデータ（例えば、ＬＲＵデータ）のアクセス回数を計測する。典型的な実装例では、ＬＲＵアクセス回数カウンタ１３は、Ｌ２タグメモリ内のＬＲＵポイントのアクセス回数を計測する。なお、ＬＲＵ（Least Recently Used）という名称が付いているが、ＬＲＵアクセス回数カウンタ１３は、必ずしもＬＲＵポイントのアクセス回数を計測する場合に限らず、次に追い出される可能性が最大のデータのアクセス回数を計測すればよい。
【００１８】
Ｌ２リプレイス部１５は、Ｌ２キャッシュ５に格納すべきデータを、Ｌ２キャッシュ５中の高速領域に格納するか、低速領域に格納するかを設定する。
【００１９】
Ｌ３キャッシュ６は、Ｌ３データメモリおよびＬ３タグメモリ（Ｌ３＄）１６と、Ｌ３キャッシュコントローラ１７とを有する。Ｌ３キャッシュコントローラ１７は、ＭＲＵアクセス回数カウンタ（第３アクセス回数計測部）１８を有する。
【００２０】
Ｌ３データメモリは、例えばＳＴＴ−ＭＲＡＭで構成されている。Ｌ３タグメモリは、例えばＳＲＡＭで構成されている。
【００２１】
ＭＲＵアクセス回数カウンタ１８は、Ｌ３キャッシュ６中のデータのうち、次に追い出される可能性が最小のデータ（例えば、ＭＲＵデータ）のアクセス回数を計測する。典型的な実装例では、ＭＲＵアクセス回数カウンタ１８は、Ｌ３タグメモリ内のＭＲＵポイントのアクセス回数を計測する。なお、ＭＲＵ（Most Recently Used）という名称が付いているが、ＭＲＵアクセス回数カウンタ１８は、必ずしもＭＲＵポイントのアクセス回数を計測する場合に限らず、次に追い出される可能性が最小のデータのアクセス回数を計測すればよい。
【００２２】
図２はＬ２キャッシュ５内のメモリセルアレイ２１の回路構成の一例を示す回路図である。図２は、メモリセルアレイ２１内の各メモリセルがＭＴＪ（Magnetic Tunnel Junction）素子２２の例を示している。ＭＴＪ素子２２には、トランジスタ２３が直列接続されている。また、４つのメモリセル２２ごとに、２個のモードセレクタ２４と、１個のセンスアンプ（ＳＡ）２５とが設けられている。
【００２３】
図２のＬ２キャッシュ５は、１個ずつのトランジスタ２３およびＭＴＪ素子２２を使用して、読出しと書込みを行う１Ｔ−１ＭＴＪモードと、２個ずつのトランジスタ２３およびＭＴＪ素子２２を使用して、読出しと書込みを行う２Ｔ−２ＭＴＪモードとを有する。
【００２４】
１Ｔ−１ＭＴＪモードでは、１個のＭＴＪ素子２２に記憶されたデータを、対応するトランジスタ２３を介して読み出して、センスアンプ２５にて、リファレンス電圧Ｒｅｆと比較して、データの０と１を判別する。
【００２５】
２Ｔ−２ＭＴＪモードでは、２個のＭＴＪ素子２２に記憶されたデータが相補データになるようにして、相補データ同士をセンスアンプ２５で比較して、データの０と１を判別する。
【００２６】
１Ｔ−１ＭＴＪモードは、２Ｔ−２ＭＴＪモードよりも、メモリセル２２サイズを小さくでき、メモリ容量を増やせるが、読出し電流が小さいため、センスマージンは低くなる。よって、１Ｔ−１ＭＴＪモードにした場合には、低速領域となる。
【００２７】
２Ｔ−２ＭＴＪモードは、１Ｔ−１ＭＴＪモードよりもメモリ容量が少なくなるが、読出し電流が大きいため、高速領域となる。
【００２８】
４個ずつのトランジスタ２３およびＭＴＪ素子２２を使用して、読出しと書込みを行う４Ｔ−４ＭＴＪモードを用意して、４Ｔ−４ＭＴＪモードを高速領域とし、１Ｔ−１ＭＴＪモードまたは２Ｔ−２ＭＴＪモードを低速領域としてもよい。
【００２９】
あるいは、１Ｔ−１ＭＴＪモード、２Ｔ−２ＭＴＪモードおよび４Ｔ−４ＭＴＪモードなどの３つ以上のモードを設けて、アクセス速度がそれぞれ相違する３つ以上の領域を設けてもよい。
【００３０】
上述したように、Ｌ１内参照回数カウンタ９は、Ｌ１キャッシュ４のキャッシュラインごとに設けられるが、各キャッシュラインのアクセス回数を単純にカウントするようにすると、Ｌ１内参照回数カウンタ９の回路面積が非常に大きくなってしまう。そこで、Ｌ１内参照回数カウンタ９として飽和カウンタを用いることで、回路面積の削減を図ることができる。
【００３１】
図３はＬ１内参照回数カウンタ９として飽和カウンタを用いた場合のＬ１内参照回数カウンタ９の計測動作の一例を示すフローチャートである。Ｌ２キャッシュ５に対する読出しまたは書込みを行う場合、読出しまたは書込みを行うべきデータのＬ１キャッシュ４でのアクセス状況を知るべく、Ｌ１キャッシュ４の対応するキャッシュラインのＬ１内参照回数カウンタ９の計測値が飽和したか否かを判定する（ステップＳ１）。飽和していなければ、対応するＬ１内参照回数カウンタ９の計測値をカウントアップする（ステップＳ２）。
【００３２】
ステップＳ１で飽和したと判定されると、Ｌ１内参照回数カウンタ９の計測値はそのままとして、カウントアップ動作を停止する（ステップＳ３）。
【００３３】
図３のフローチャートでは、いったんＬ１内参照回数カウンタ９の計測値が飽和値に達すると、それ以上の計測動作は行えなくなる。そこで、いったん飽和値に達したＬ１内参照回数カウンタ９のカウントアップ動作を行う必要が生じた場合には、このＬ１内参照回数カウンタ９とは別のキャッシュラインに対応するＬ１内参照回数カウンタ９の計測値をカウントダウンしてもよい。これにより、Ｌ１内参照回数カウンタ９は、カウントアップとカウントダウンを行うことになり、すべてのＬ１内参照回数カウンタ９が飽和するという不具合を防止できる。この場合、カウントアップを続けて正の飽和値になるＬ１内参照回数カウンタ９と、カウントダウンを続けて負の飽和値になるＬ１内参照回数カウンタ９とが存在してしまうことがありうる。ただし、本実施形態では、アクセス回数が多いか否かを判断するためにＬ１内参照回数カウンタ９を使用するため、正の飽和値になったＬ１内参照回数カウンタ９により、アクセス回数が多いことを判断できる。Ｌ１キャッシュ４に対するアクセスが均等に行われている場合は、各キャッシュラインに対応するＬ１内参照回数カウンタ９の計測値の差は小さくなるため、カウントダウンも行えるようにすれば、アクセス回数が最多のキャッシュラインを精度よく検出することができる。
【００３４】
図１では、高速領域と低速領域を有するＬ２キャッシュ５の上位階層のキャッシュメモリは、Ｌ１キャッシュ４のみである。これに対して、例えば、Ｌ３キャッシュ６が高速領域と低速領域を有する場合、Ｌ３キャッシュ６の上位階層のキャッシュメモリは、Ｌ１キャッシュ４とＬ２キャッシュ５の２階層である。高速領域と低速領域を有する不揮発メモリを備えたキャッシュメモリより上位側に２階層以上のキャッシュメモリが存在する場合は、Ｌ２キャッシュ５内に設けられるＬ２内参照回数カウンタ９の計測動作は、図３のフローチャートではなく、図４のフローチャートで表される。
【００３５】
まず、書込みアクセスが、上位階層のキャッシュメモリからのデータのライトバックであるか否かを判定する（ステップＳ１１）。ステップＳ１１の判定がＮＯの場合、下位階層のキャッシュメモリからのデータの書き込みであるため、書き込むべきキャッシュラインに対応するＬ１内参照回数カウンタ９を０に初期化する（ステップＳ１２）。
【００３６】
ステップＳ１１の判定がＹＥＳの場合、Ｌ２キャッシュ５内のＬ２内参照回数カウンタが飽和しているか否かを判定する（ステップＳ１３）。飽和していなければ、Ｌ１キャッシュ４内のＬ１参照回数カウンタの計測値を、Ｌ２内参照回数カウンタの計測値に合算する（ステップＳ１４）。一方、ステップＳ１３で飽和していると判定された場合、Ｌ２内参照回数カウンタのカウントアップ動作を停止する（ステップＳ１５）。
【００３７】
上述したように、Ｌ２キャッシュコントローラ１２は、Ｌ２キャッシュ５にデータを書き込む場合は、このデータに対応するＬ１内参照回数カウンタ９の計測値に基づいて、Ｌ２キャッシュ５内の高速領域と低速領域のどちらに書き込むべきかを決定する。
【００３８】
図５はＬ２キャッシュコントローラ１２が行う書込み制御の処理手順の一例を示すフローチャートである。Ｌ２キャッシュコントローラ１２は、まず、Ｌ１内参照回数カウンタ９の計測値は所定の閾値を超えたか否かを判定する（ステップＳ２１）。閾値を超えたと判定されると、書き込むべきデータを高速領域に格納する（ステップＳ２２）。次に、高速領域が満杯になって、データが溢れたか否かを判定する（ステップＳ２３）。データが溢れた場合は、溢れたデータを低速領域に格納する（ステップＳ２４）。
【００３９】
一方、ステップＳ２１で、閾値を超えなかったと判定されると、書き込むべきデータを低速領域に格納する（ステップＳ２５）。
【００４０】
ステップＳ２４またはＳ２５の処理が終了すると、低速領域が満杯になって、データが溢れたか否かを判定する（ステップＳ２６）。データが溢れた場合は、溢れたデータをメインメモリに格納する（ステップＳ２７）。
【００４１】
なお、ステップＳ２２またはＳ２４で、高速領域または低速領域にデータを書き込んだときに、高速領域または低速領域が満杯になった場合は、高速領域または低速領域内に最も長く滞留しているデータから順に追い出されるアルゴリズムを採用することができる。
【００４２】
一方、Ｌ２キャッシュ５内の高速領域に格納されているデータに対して読出し要求があった場合は、このデータがＬ１キャッシュ４に書き込まれることになる。よって、高速領域に格納しておく必要はない。そこで、高速領域内のデータを低速領域に移してもよい。
【００４３】
図６はＬ２キャッシュ５内のデータに対して読出し要求があった場合のＬ２キャッシュコントローラ１２の処理手順の一例を示すフローチャートである。まず、読出し要求のあったデータが高速領域に格納されているか否かを判定する（ステップＳ３１）。高速領域に格納されている場合には、そのデータをＬ１キャッシュ４に転送した後、そのデータを低速領域に移動する（ステップＳ３２）。ステップＳ３１で低速領域に格納されていると判定されると、そのデータをＬ１キャッシュ４に転送する。
【００４４】
Ｌ２キャッシュ５内の高速領域と低速領域のメモリ容量は、アクセス状況に応じて可変させてもよい。例えば、Ｌ２キャッシュ５がセットアソシアティブのキャッシュメモリの場合、Ｌ２キャッシュ５は、複数のウェイを有する。よって、アクセス状況に応じて、ウェイごとに、高速領域にするか低速領域にするかを切り替えてもよい。
【００４５】
通常のキャッシュメモリでは、キャッシュメモリからクリーンなデータを追い出す際、下位階層のメモリにライトバックする必要はない。ただし、本実施形態では、上述したように、上位階層でのアクセス状況に応じて、下位階層のキャッシュメモリ内の高速領域と低速領域のどちらにデータを格納するかを判断する。よって、上位階層のキャッシュメモリからクリーンなデータを追い出す際にも、そのデータの参照回数を下位階層のキャッシュメモリに反映させ、参照回数の大小により、上位階層から追い出されたデータを高速領域と低速領域のどちらに格納するかを決定する。
【００４６】
なお、不揮発メモリへの不要な書込み回数を削減するには、不揮発メモリの上位階層のキャッシュメモリからクリーンなデータが追い出されたときに、そのデータを高速領域には書き込まないようにしてもよい。この場合、上位階層のキャッシュメモリから追い出されたという情報だけを下位階層の不揮発メモリの例えばタグメモリに記録してもよい。
【００４７】
図７はＬ２キャッシュコントローラ１２がＬ２キャッシュ５内の高速領域と低速領域のメモリ容量をウェイ単位で切替制御する処理手順の一例を示すフローチャートである。まず、ＬＲＵアクセス回数カウンタ１３を初期化するとともに、Ｌ３キャッシュ６に対してＭＲＵアクセス回数カウンタ１８の初期化を指示する（ステップＳ４１）。
【００４８】
次に、プロセッサコア３の所定のサイクル数分をカウントする（ステップＳ４２）。所定のサイクル数は任意であり、例えば１Ｍサイクルである。このサイクル数の間、ＬＲＵアクセス回数カウンタ１３とＭＲＵアクセスカウンタの計測値は更新され続ける。
【００４９】
所定のサイクル数分のカウントが終了すると、Ｌ２キャッシュコントローラ１２は、ＬＲＵアクセス回数カウンタ１３の計測値ｍｖ１とＭＲＵアクセス回数カウンタ１８の計測値ｍｖ２とを取得する（ステップＳ４３）。
【００５０】
次に、Ｌ２キャッシュコントローラ１２は、ｍｖ２＞α×ｍｖ１であるか否かを判定する（ステップＳ４４）。ここで、αは、適宜に設定可能な任意の実数からなる係数であり、例えばα＝１．０に設定される。
【００５１】
ステップＳ４４の判定がＹＥＳの場合は、Ｌ２キャッシュ５よりもＬ３キャッシュ６へのアクセス回数が多いことを示しており、この場合は、次の１Ｍサイクル数分については、Ｌ２キャッシュ５内の低速領域の割合を増やすべく、ウェイ数を増やす（ステップＳ４５）。
【００５２】
ステップＳ４４の判定がＮＯの場合は、ｍｖ２＜β×ｍｖ１であるか否かを判定する（ステップＳ４６）。ここで、βは、適宜に設定可能な任意の実数からなる係数であり、例えばβ＝０．４に設定される。
【００５３】
ステップＳ４６の判定がＹＥＳの場合は、Ｌ３キャッシュ６よりもＬ２キャッシュ５へのアクセス回数が多いことを示しており、この場合は、次の１Ｍサイクル数分については、Ｌ２キャッシュ５内の高速領域の割合を増やすべく、ウェイ数を減らす（ステップＳ４７）。
【００５４】
上述した係数αとβは、Ｌ２キャッシュ５とＬ３キャッシュ６のメモリ容量や、要求されるアクセス性能と消費電力等によって、適宜設定する必要がある。
【００５５】
このように、本実施形態では、不揮発メモリを有するキャッシュメモリ（例えば、Ｌ２キャッシュ５）の上位階層のキャッシュメモリのアクセス状況に応じて、不揮発メモリに格納すべきデータを不揮発メモリ内の高速領域と低速領域のどちらに格納するかを決定する。これにより、将来的に再びアクセスされる可能性の高いデータを高速領域に格納することができ、アクセス性能を向上できる。また、不揮発メモリを高速動作させると消費電力が増大するが、本実施形態は、不揮発メモリの上位階層のキャッシュメモリのアクセス状況に応じて、不揮発メモリ内の限られたメモリ容量だけを高速領域として用いることができるため、消費電力の削減が図れる。
【００５６】
また、本実施形態によれば、不揮発メモリの上位階層のキャッシュメモリからデータが追い出されたときに、そのデータのアクセス状況に応じて、そのデータを不揮発メモリ内の高速領域と低速領域のどちらに格納するかを判断するため、再アクセスされる可能性の高いデータを確実に高速領域に格納することができる。
【００５７】
さらに、不揮発メモリ内の高速領域に格納されたデータの読出し要求があった場合には、当該データを上位階層のキャッシュメモリに転送するとともに、当該データを不揮発メモリ内の低速領域に移動させるため、高速領域に空きスペースを作ることができ、限られた高速領域を有効活用できる。
【００５８】
また、不揮発メモリを有するキャッシュメモリ（例えばＬ２キャッシュ５）内にＬＲＵアクセス回数カウンタ１３を設けるとともに、このキャッシュメモリの下位階層のキャッシュメモリ（例えばＬ３キャッシュ６）内にＭＲＵアクセス回数カウンタ１８を設けるため、これらカウンタの計測値に基づいて、不揮発メモリ内の高速領域と低速領域の割合を任意に調整できる。よって、プロセッサコア３が実行するアプリケーションや、不揮発メモリのメモリ容量や、求められるアクセス速度等に応じて、不揮発メモリ内の高速領域と低速領域の割合を最適化することができる。
【００５９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６０】
１  キャッシュメモリシステム、２  プロセッサシステム、３  プロセッサコア、４  Ｌ１キャッシュ、５  Ｌ２キャッシュ、６  Ｌ３キャッシュ、７  Ｌ１データメモリおよびＬ１タグメモリ、８  Ｌ１キャッシュコントローラ、９  Ｌ１内参照回数カウンタ、１１  Ｌ２データメモリおよびＬ２タグメモリ、１２  Ｌ２キャッシュコントローラ、１３  ＬＲＵアクセス回数カウンタ、１４  ウェイ数制御部、１５  Ｌ２リプレイス部、１６  Ｌ３データメモリおよびＬ３タグメモリ、１７  Ｌ３キャッシュコントローラ、１８  ＭＲＵアクセス回数カウンタ、２１  メモリセルアレイ、２２  ＭＴＪ素子、２３  トランジスタ、２４  モードセレクタ、２５  センスアンプ
【要約】      （修正有）【課題】不揮発メモリを用いても、アクセス速度が低下しないようにしたキャッシュメモリシステムを提供する。【解決手段】キャッシュメモリシステム１は、Ｌ１キャッシュメモリ４と、アクセス速度がそれぞれ相違する複数の領域を生成可能な不揮発メモリを有し、Ｌ１キャッシュメモリよりもアクセス優先度が低く、Ｌ１キャッシュメモリの下位階層のＬ２キャッシュメモリ５と、Ｌ１キャッシュメモリに対するアクセス状況に応じて、Ｌ２キャッシュメモリに格納すべき各データを複数の領域に分類して格納する制御を行うＬ２キャッシュコントローラ１２と、を備える。【選択図】図１【図１】
0005992592.tif 000002
【図２】
0005992592.tif 000003
【図３】
0005992592.tif 000004
【図４】
0005992592.tif 000005
【図５】
0005992592.tif 000006
【図６】
0005992592.tif 000007
【図７】
0005992592.tif 000008