(57)【特許請求の範囲】
【請求項１】
不揮発メモリデータ領域を含む第１メモリと、
前記不揮発メモリデータ領域内のデータのうち、前記第１メモリよりもアクセス優先度の低い下位階層の第２メモリへの書き戻しを行っていないデータを、前記第２メモリに格納する前に格納する第３メモリと、を備え、
前記第３メモリのビットエラー率は、前記第１メモリのビットエラー率よりも低いメモリシステム。
【請求項２】
読出し要求のあった前記不揮発メモリデータ領域内のデータの誤りを訂正する誤り訂正部と、
読出し要求のあったデータのうち、前記誤り訂正部で訂正できないデータを前記第３メモリから読み出す制御を行うコントローラと、を備える請求項１に記載のメモリシステム。
【請求項３】
読出し要求のあったデータが前記不揮発メモリデータ領域に格納されているか否かを判定するヒット判定部と、
前記ヒット判定部により格納されていると判定されたデータに誤りがあるか否かを検知し、誤りがあれば前記誤り訂正部での誤り訂正が可能か否かを判定する誤り訂正判定部と、を備え、
前記コントローラは、前記ヒット判定部により格納されていると判定されたデータに誤りがない場合には、前記不揮発メモリデータ領域からデータを読み出す制御を行い、前記ヒット判定部により格納されていると判定されて前記不揮発メモリデータ領域から読み出されたデータに前記誤り訂正部で誤り訂正可能な誤りがある場合には、前記誤り訂正部で誤り訂正したデータを読み出す制御を行い、前記ヒット判定部により格納されていないと判定された場合には前記第３メモリから前記読出し要求のあったデータを読み出す制御を行う請求項２に記載のメモリシステム。
【請求項４】
前記コントローラは、前記第２メモリからデータを読み出す場合には、このデータを前記第３メモリには書き込まずに、前記第１メモリに書き込む制御を行う請求項２または３に記載のメモリシステム。
【請求項５】
前記コントローラは、前記第３メモリに新たなデータを書き込む場合、あるいは前記第３メモリの電源をオフにする場合に、前記第３メモリに格納されたデータを前記第２メモリに書き戻す請求項２乃至４のいずれか１項に記載のメモリシステム。
【請求項６】
前記第３メモリのメモリ容量は、前記第１メモリのメモリ容量よりも小さい請求項１乃至５のいずれか１項に記載のメモリシステム。
【請求項７】
前記第３メモリは、前記第１メモリよりもアクセス速度が高速な揮発データ領域または不揮発データ領域を有する請求項１乃至６のいずれかに記載のメモリシステム。
【請求項８】
前記第１メモリよりもアクセス優先度が高い第４メモリを備え、
前記第１メモリは、読出し要求のあったデータが前記第４メモリに格納されていなかった場合と、書込み要求により前記第４メモリからデータが追い出された場合とにアクセスされる請求項１乃至７のいずれかに記載のメモリシステム。
【請求項９】
前記第１メモリは、最下位階層のキャッシュメモリであり、
前記第２メモリは、メインメモリである請求項１乃至８のいずれか１項に記載のメモリシステム。
【請求項１０】
前記不揮発メモリデータ領域は、ＭＲＡＭ（Magnetoresistive Random Access Memory）を含む請求項１乃至９のいずれかに記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関する。
【背景技術】
【０００２】
携帯情報端末に用いられるプロセッサは、低消費電力であることが求められる。プロセッサの低消費電力化手法の１つとして、待機電力の大きいＳＲＡＭ（Static Random Access Memory）を用いたキャッシュメモリを、不揮発性メモリに置換する手法がある。
【０００３】
不揮発メモリには、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＲｅＲＡＭ（Resistance Random Access Memory）などがあるが、特にＭＲＡＭは、現在提案されている不揮発性メモリの中で高い書き換え耐性と、高速の読出しと書込みが可能な動作性能と、高集積可能なセル面積との３つの特徴を同時に満たしうるメモリである。
【０００４】
しかしながら、ＭＲＡＭは、ＳＲＡＭやＤＲＡＭと比べて、ビットエラー率が高い。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開２０１２／０２９１３７
【特許文献２】国際公開２０１３／０４２２４０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、不揮発メモリを用いながらも、信頼性およびアクセス性能を向上可能なメモリシステムを提供するものである。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様では、不揮発メモリデータ領域を含む第１メモリと、
前記不揮発メモリデータ領域内のデータのうち、前記第１メモリよりもアクセス優先度の低い下位階層の第２メモリへの書き戻しを行っていないデータを、前記第２メモリに格納する前に格納する第３メモリと、を備え、
前記第３メモリのビットエラー率は、前記第１メモリのビットエラー率よりも低いメモリシステムが提供される。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によるキャッシュメモリシステムの概略構成を示すブロック図。
【図２】本実施形態のキャッシュメモリシステムの処理動作を模式的に示す図。
【図３】ＣＰＵのリードアクセス時の処理動作の一例を示すフローチャート。
【図４】ＣＰＵの書込み要求によりＬ２キャッシュからデータが追い出された場合の処理動作の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について、詳細に説明する。図１は一実施形態によるメモリシステム１の概略構成を示すブロック図である。図１のメモリシステム１は、複数のソケット２を備えている。各ソケット２は、複数のコア部３と、Ｌ２キャッシュバス４と、Ｌ２キャッシュ（Ｌ２＄、第４メモリ）５と、Ｌ２キャッシュコントローラ６と、Ｌ２誤り検知訂正部７と、を有する。ソケット２の数は任意である。同様に、各ソケット２内のコア部３の数も任意である。各ソケット２は、１個または複数のチップで構成可能である。同様に、各コア部３も、１個または複数のチップで構成可能である。なお、図１のような複数のソケット２や複数のコア部３を設けることは必須ではない。
【００１０】
Ｌ２キャッシュバス４は、複数のコア部３に接続されている。複数のコア部３は、Ｌ２キャッシュバス４とＬ２キャッシュコントローラ６を介して、共通のＬ２キャッシュ５にアクセスする。Ｌ２キャッシュ５のメモリ容量は、例えば２５６ｋバイトである。Ｌ２キャッシュ５は、Ｌ２タグ部（不図示）と、Ｌ２データキャッシュ部（不図示）とを有する。Ｌ２誤り検知訂正部７は、Ｌ２データキャッシュ部に書き込んだデータを読み出す際に、誤り検知と誤り訂正とを行う。
【００１１】
各コア部３は、ＣＰＵコア１１と、Ｌ１データキャッシュ（Ｌ１ｄ＄）１２と、Ｌ１データキャッシュコントローラ１３と、Ｌ１命令キャッシュ（Ｌ１ｉ＄）１４と、Ｉキャッシュコントローラ１５とを有する。Ｌ１データキャッシュ１２とＬ１命令キャッシュ１４のメモリ容量は任意だが、例えば３２ｋバイトのメモリ容量を有する。
【００１２】
この他、図１のメモリシステム１は、Ｌ３キャッシュバス１６と、Ｌ３キャッシュ（Ｌ３＄、第１メモリ）１７と、Ｌ３キャッシュコントローラ１８と、Ｌ３誤り検知訂正部（誤り訂正部）１９と、ダーティラインテーブル（ＤＬＴ：Dirty Line Table、第３メモリ）２０と、ＤＬＴコントローラ２１と、ＤＬＴ誤り検知訂正部２２と、メインメモリ（第２メモリ）２３と、メモリコントローラ２４と、ＭＡＩＮ誤り検知訂正部２５とを有する。Ｌ３キャッシュバス１６は、複数のソケット２に接続されている。ＤＬＴ誤り検知訂正部２２はＤＬＴ２０自体がエラー率の低いメモリで構成されるため、必ずしも必須要件ではない。基本となるキャッシュ階層が３階層の場合、Ｌ３キャッシュ１７とメインメモリ２３との間の階層にＤＬＴ２０が実装されるが、基本となるキャッシュ階層が２階層の場合は、Ｌ２キャッシュ５とメインメモリ２３との間の階層にＤＬＴ２０が実装される場合もある。
【００１３】
各ソケット２は、Ｌ３キャッシュバス１６とＬ３キャッシュコントローラ１８を介して、共通のＬ３キャッシュ１７にアクセスする。Ｌ３キャッシュ１７のメモリ容量は例えば３２Ｍバイトである。
【００１４】
Ｌ３キャッシュ１７は、Ｌ３タグ部と、Ｌ３データキャッシュ部とを有する。Ｌ３データキャッシュ部は、ＳＴＴ−ＭＲＡＭ等の不揮発メモリで構成される不揮発メモリデータ領域である。Ｌ３タグ部は、例えばＳＲＡＭ等のＬ３データキャッシュ部よりもアクセス速度が速いメモリである。Ｌ３誤り検知訂正部１９は、Ｌ３データキャッシュ部に書き込んだデータを読み出す際に、誤り検知と誤り訂正とを行う。
【００１５】
ＤＬＴ２０は、ＤＬＴコントローラ２１によりアクセスされる。ＤＬＴコントローラ２１は、Ｌ３キャッシュコントローラ１８に接続されている。ＤＬＴ２０は、Ｌ３キャッシュ１７とメインメモリ２３との間の階層のキャッシュメモリとみなすこともできるし、Ｌ３キャッシュ１７と同じ階層のキャッシュメモリとみなすこともできる。後述するように、ＤＬＴ２０は、部分的には通常のキャッシュメモリに類似する動作を行うが、通常のキャッシュメモリと異なる動作も行う部分もある。
【００１６】
ＤＬＴ２０のメモリ容量は、Ｌ３キャッシュ１７のメモリ容量よりもはるかに小さく、例えば６４ｋバイト程度で構わない。ＤＬＴ２０のアクセス速度は、Ｌ３キャッシュ１７のアクセス速度よりも速くするのが望ましいが、Ｌ３キャッシュ１７と同等あるいはＬ３キャッシュ１７以下のアクセス速度でも構わない。
【００１７】
ＤＬＴ２０は、ＤＬＴタグ部（不図示）と、ＤＬＴデータキャッシュ部（不図示）とを有する。ＤＬＴデータキャッシュ部は、Ｌ３データキャッシュ部よりもビットエラー率の低いＳＲＡＭ等のメモリで構成されている。なお、後述するように、ＤＬＴデータキャッシュ部とＬ３データキャッシュ部がともにＭＲＡＭで構成されていてもよい。この場合、後述するように、ＭＲＡＭの使い方やアクセス方式を変えることで、ＤＬＴデータキャッシュ部のビットエラー率をＬ３データキャッシュ部のビットエラー率よりも低くすることができる。
【００１８】
ＤＬＴ誤り検知訂正部２２は、ＤＬＴデータキャッシュ部に格納されたデータを読み出す際に、誤り検知と誤り訂正とを行う。
【００１９】
メインメモリ２３は、メモリコントローラ２４によりアクセスされる。メモリコントローラ２４は、ＤＬＴコントローラ２１に接続されている。メインメモリ２３は、例えばＤＲＡＭで構成される。ＭＡＩＮ誤り検知訂正部２５は、メインメモリ２３に格納されたデータを読み出す際に、誤り検知と誤り訂正とを行う。
【００２０】
なお、図１のメモリシステム１のうち、一部の構成部（例えば、複数のコア部３やメインメモリ２３など）は、別の半導体チップや回路基板に配置される場合がありうる。すなわち、本実施形態によるメモリシステム１は、少なくともＬ３キャッシュ１７と、Ｌ３キャッシュコントローラ１８と、Ｌ３誤り検知訂正部１９と、ＤＬＴ２０と、ＤＬＴコントローラ２１と、ＤＬＴ誤り検知訂正部２２とを有する。
【００２１】
図１では、Ｌ３キャッシュ１７を制御するＬ３キャッシュコントローラ１８と、ＤＬＴ２０を制御するＤＬＴコントローラ２１と、メインメモリ２３を制御するメモリコントローラ２４とを別個に設ける例を示しているが、これらコントローラのうち２つ以上を１つのコントローラに統合してもよい。
【００２２】
図２は本実施形態のメモリシステム１の処理動作を模式的に示す図である。図２に示すように、図１のメモリシステム１は、Ｌ１キャッシュ１２、Ｌ２キャッシュ５、Ｌ３キャッシュ１７、およびメインメモリ２３と４階層のメモリ構成になっており、Ｌ１キャッシュが最上位階層であり、メインメモリ２３が最下位階層である。また、Ｌ３キャッシュ１７は、最下位のキャッシュメモリであり、ＬＬＣ（Last Level Cache）と呼ばれる。下位階層のメモリほど、メモリ容量が大きくなり、かつアクセス速度が遅くなる。
【００２３】
なお、ＬＬＣは、必ずしもＬ３キャッシュ１７とは限らない。例えば、Ｌ４キャッシュ以降の高次のキャッシュメモリをＬＬＣとしてもよい。反対に、キャッシュ階層を２階層にして、Ｌ２キャッシュ５をＬＬＣとしてもよい。
【００２４】
図２に示すように、本実施形態のキャッシュメモリは、ＬＬＣとメインメモリ２３との間に、ＬＬＣよりも小メモリ容量のＤＬＴ２０を設けている。
【００２５】
ＤＬＴ２０は、ＬＬＣに新たなデータを格納する際、そのデータがダーティなデータの場合に格納される。すなわち、ＬＬＣに新たに格納されるデータが、ＬＬＣよりも下位階層のメインメモリ２３にまだ書き込まれていない場合には、そのデータがＬＬＣとＤＬＴ２０の双方に格納される。
【００２６】
このようにする理由は、ＤＬＴ２０は、ＬＬＣよりもビットエラー率が低いことから、ＬＬＣから読み出したデータに誤りがあっても、ＤＬＴ２０から同じデータを読み出せば、ＣＰＵに正しいデータを引き渡せるためである。
【００２７】
ＬＬＣがＬ３キャッシュ１７であれば、Ｌ３キャッシュ１７から読み出したデータは、Ｌ３誤り検知訂正部１９にて誤り訂正を行うことができる。よって、Ｌ３誤り検知訂正部１９で正しく誤り訂正できたデータは、そのままＣＰＵに引き渡せばよい。
【００２８】
図２では、Ｌ１キャッシュ１２、Ｌ２キャッシュ５、ＬＬＣ１７およびメインメモリ２３間でのデータの送受を矢印線で表している。ＣＰＵ１１とＬ１キャッシュ１２間のデータ送受（矢印線ｙ１）と、Ｌ１キャッシュ１２とＬ２キャッシュ５間のデータ送受（矢印線ｙ２）とは、従来のキャッシュメモリと同じである。
【００２９】
ＬＬＣ（Ｌ３キャッシュ１７）に書き込まれたデータ（矢印線ｙ３）のうち、ダーティなデータはＤＬＴ２０にも書き込まれる（矢印線ｙ４）。ＬＬＣ（Ｌ３キャッシュ１７）から読み出されるデータ（矢印線ｙ５）のうち、Ｌ３誤り検知訂正部１９で誤り訂正できなかったデータは、ＤＬＴ２０から読み出される（矢印線ｙ６）。
【００３０】
ＤＬＴ２０に書き込まれたデータは、所定のタイミングでメインメモリ２３に書き戻される（矢印線ｙ７）。所定のタイミングとは、ＤＬＴ２０に新たなデータを書き込む場合や、ＤＬＴ２０の電源をオフする場合である。
【００３１】
メインメモリ２３から読み出されたデータは、ＤＬＴ２０には書き込まれずにＬＬＣ（Ｌ３キャッシュ１７）に書き込まれる（矢印線ｙ８）。
【００３２】
このように、ＤＬＴ２０は、ＬＬＣ（Ｌ３キャッシュ１７）に新たに書き込まれるデータのうち、ダーティなデータだけを格納し、ＤＬＴ２０に格納されたデータは、所定のタイミングでメインメモリ２３に書き戻されるため、ＤＬＴ２０は小メモリ容量で構わない。ただし、ＤＬＴ２０はＬＬＣ（Ｌ３キャッシュ１７）よりもビットエラー率が低いことが前提である。これにより、ＬＬＣ（Ｌ３キャッシュ１７）から読み出したデータに誤りがあって、その誤りがＬ３誤り検知訂正部１９で訂正できない場合には、ＤＬＴ２０から正しいデータを読み出すことができる。ここで、ＤＬＴ２０内のＤＬＴデータキャッシュ部がＬＬＣ（Ｌ３キャッシュ１７）よりもビットエラー率が低くない場合であっても、ＤＬＴ２０に接続されたＤＬＴ誤り検知訂正部２２がＬＬＣ（Ｌ３キャッシュ１７）よりも低いエラー率を検知訂正機能を用いて実現できていればよい。本明細書では、ＤＬＴ誤り検知訂正部２２にて低ビットエラー率を実現する場合も含めて、ＤＬＴ２０のビットエラー率がＬＬＣのビットエラー率より低いと定義する。
【００３３】
ＤＬＴ２０は、Ｌ３キャッシュ１７からデータを読み出す際のデータの信頼性を向上させるために設けられるものである。よって、メインメモリ２３からデータを読み出す際には、そのデータをＤＬＴ２０に格納する必要はない。このように、ＤＬＴ２０は、厳密な意味では、ＬＬＣ（Ｌ３キャッシュ１７）よりも下位階層のキャッシュメモリではない。
【００３４】
上述したように、Ｌ３キャッシュ１７に新たなデータを書き込む場合に、そのデータがメインメモリ２３に格納されていないダーティなデータであれば、ＤＬＴ２０にも書き込まれる。このため、ＤＬＴ２０にデータを書き込んだ時点では、同じデータが必ずＬ３キャッシュ１７にも存在する。その後、Ｌ３キャッシュ１７にクリーンなデータを書き込むなどして、ＤＬＴ２０に書き込んだデータと同じデータをＬ３キャッシュ１７から消去（更新）する場合がありうる。よって、ＤＬＴ２０に書き込んだデータは、その直後はＬ３キャッシュ１７にも存在するが、時間の経過とともにＬ３キャッシュ１７に存在しなくなる可能性がありうる。
【００３５】
上述した説明では、Ｌ３キャッシュ１７がＬＬＣの場合に、Ｌ３キャッシュ１７に対応づけてＤＬＴ２０を設ける例を説明したが、Ｌ３キャッシュ１７以外の階層のキャッシュメモリがＬＬＣの場合は、そのＬＬＣに対応づけてＤＬＴ２０を設ければよい。また、ＤＬＴ２０は必ずしもＬＬＣに対応づけて設けられるわけではない。例えば、Ｌ３キャッシュ１７よりも高次のキャッシュメモリが存在する場合に、Ｌ３キャッシュ１７に対応づけてＤＬＴ２０を設けてもよい。すなわち、ＤＬＴ２０よりも優先順位の低い高次のキャッシュメモリが存在していてもよい。さらに、ＬＬＣよりも上位の階層において、キャッシュ階層間に設けることも可能である。その場合は、たとえばＬ２キャッシュ５とＬ３キャッシュ１７の間などにＤＬＴ２０を設けることも可能である。また、この場合、ソケット２ごとに独立したＬ２キャッシュ５とソケット２間で共有されたＬ３キャッシュ１７との間にＤＬＴ２０を設けることも可能である。
【００３６】
ＤＬＴ２０は、ＬＬＣ（Ｌ３キャッシュ１７）よりもビットエラー率が低いことを特徴とする。ＬＬＣ（Ｌ３キャッシュ１７）のＬ３データキャッシュ部がＭＲＡＭで構成されている場合、ＤＬＴ２０のＤＬＴデータキャッシュ部をＭＲＡＭよりもビットエラー率が低いメモリ（例えば、ＳＲＡＭ、ＤＲＡＭ、ＦｅＲＡＭまたはＲｅＲＡＭなど）で構成してもよい。また、ＤＬＴデータキャッシュ部を同じくＭＲＡＭで構成する場合には、複数のＭＲＡＭセルにて１セルを構成してビットエラー率を低くしてもよい。あるいは、ＤＬＴデータキャッシュ部におけるＭＲＡＭの書込み電圧をＬ３データキャッシュ部におけるＭＲＡＭの書込み電圧よりも高くしてビットエラー率を低くしてもよい。あるいは、ＤＬＴデータキャッシュ部におけるＭＲＡＭの書込みパルス幅をＬ３データキャッシュ部におけるＭＲＡＭの書込みパルス幅よりも長くしてビットエラー率を低くしてもよい。あるいは、ＤＬＴデータキャッシュ部については、ＭＲＡＭのベリファイ処理を設けることで、ビットエラー率を低くしてもよい。あるいは、ＤＬＴデータキャッシュ部におけるＭＲＡＭの読出し電流をＬ３データキャッシュ部におけるＭＲＡＭより低くしてビットエラー率を低くしてもよい。あるいは、ＤＬＴデータキャッシュ部については、より強力なエラー訂正機能を持ったＤＬＴ誤り検知訂正部２２を設けることでビットエラー率を低くしてもよい。
【００３７】
図３はＣＰＵ１１のリードアクセス時の処理動作の一例を示すフローチャートである。図３のフローチャートは、Ｌ３キャッシュ１７がＬＬＣで、Ｌ３キャッシュ１７に対応してＤＬＴ２０が設けられている場合の処理動作を示している。上述したように、Ｌ３キャッシュ１７にダーティなデータを格納する場合は、ＤＬＴ２０にも同じデータが格納されるものとする。
【００３８】
まず、ＣＰＵ１１が読出し要求をしたデータをＬ１キャッシュ１２またはＬ２キャッシュ５から正しく読み出せたか否かを判定する（ステップＳ１）。正しく読み出せた場合は、読み出したデータをＣＰＵ１１に返す（ステップＳ２）。
【００３９】
ステップＳ１の判定がＮＯの場合は、読出し要求のあったデータがＬ１キャッシュ１２とＬ２キャッシュ５に格納されていないか、あるいは読出し要求のあったデータがＬ１キャッシュ１２またはＬ２キャッシュ５に格納されているが、格納されているデータに誤り訂正不可能な誤りがある場合である。
【００４０】
ステップＳ１の判定がＮＯの場合は、Ｌ３キャッシュ１７にアクセスする（ステップＳ３）。ここでは、ＣＰＵ１１が読出し要求をしたデータのアドレスがＬ３キャッシュ１７のＬ３タグ部にヒットしたか否かを判定する（ステップＳ４、ヒット判定部）。ヒットすれば、ヒットしたデータをＬ３データキャッシュ部から読み出す（ステップＳ５）。そして、読み出したデータに誤りがあった場合には、その誤りを訂正できるか否かを判定する（ステップＳ６、誤り訂正判定部）。
【００４１】
ステップＳ６の判定がＹＥＳの場合は、Ｌ３キャッシュ１７から読み出したデータに誤りがなければそのデータを直接、あるいはＬ３キャッシュ１７から読み出したデータに誤りがあれば、Ｌ３誤り検知訂正部１９で誤り訂正したデータをＣＰＵ１１に返す（ステップＳ７）。ステップＳ６の判定がＮＯの場合は、ＤＬＴ２０にアクセスする（ステップＳ８）。すなわち、ＣＰＵ１１が読出し要求をしたデータのアドレスがＤＬＴタグ部にヒットしたか否かを判定する（ステップＳ９）。ヒットすれば、ヒットしたデータをＤＬＴデータキャッシュ部から読み出す（ステップＳ１０）。ここでは、ＤＬＴデータキャッシュ部の信頼性は十分に高いことを前提としており、仮にＤＬＴデータキャッシュ部から読み出したデータに誤りがあっても、その誤りをＤＬＴ誤り検知訂正部２２にて訂正できるものと仮定している。
【００４２】
一方、ステップＳ９でミスした場合には、メインメモリ２３にアクセスする（ステップＳ１１）。そして、ＣＰＵ１１が読出し要求をしたデータをメインメモリ２３から読み出して（ステップＳ１２）、読み出したデータをＬ１キャッシュ１２、Ｌ２キャッシュ５およびＬ３キャッシュ１７に書き込む（フィルする）（ステップＳ１３）。この場合、メインメモリ２３から読み出されたデータは、ＤＬＴ２０には書き込まれない。このように、メインメモリからのデータを読み出す際には、そのデータはＤＬＴにフィルされない。この点で、ＤＬＴ２０は、通常のキャッシュメモリとは動作が異なる。
【００４３】
図４はＣＰＵ１１の書込み要求によりＬ２キャッシュ５からデータが追い出された場合の処理動作の一例を示すフローチャートである。Ｌ２キャッシュ５からデータが追い出されると、Ｌ３キャッシュ１７にアクセスする（ステップＳ２１）。ここでは、Ｌ２キャッシュ５から追い出されたデータのアドレスがＬ３タグ部にヒットしたか否かを判定する（ステップＳ２２）。ヒットした場合には、Ｌ３データキャッシュ部内の対応データを、Ｌ２キャッシュ５から追い出されたデータに更新する（ステップＳ２３）。ステップＳ２２でミスした場合は、Ｌ３キャッシュ１７から、無効（Invalid）なデータまたはクリーンなデータを消去して、消去したデータの代わりにＬ２キャッシュ５から追い出されたデータを書き込む（ステップＳ２４）。
【００４４】
ステップＳ２３またはＳ２４の処理が終了すると、次に、ＤＬＴ２０にアクセスする（ステップＳ２５）。ここでは、Ｌ３キャッシュ１７に書き戻したデータのアドレスがＤＬＴタグ部にヒットしたか否かを判定する（ステップＳ２６）。ヒットすれば、Ｌ３キャッシュ１７に書き戻したデータ、すなわちＬ２キャッシュ５から追い出されたデータをＤＬＴ２０にも書き込む（ステップＳ２７）。ステップＳ２６でミスすれば、ＤＬＴ２０内の古いデータを追い出して（Evictして）、代わりに、Ｌ２キャッシュ５から追い出されたデータをＤＬＴ２０にも書き込む（ステップＳ２８）。次に、ＤＬＴ２０から追い出されたデータをメインメモリ２３に書き戻す（ステップＳ２９）。
【００４５】
このように、本実施形態では、階層化された複数のキャッシュメモリのうち、少なくとも１階層のキャッシュメモリ（例えば、ＬＬＣ）に対応づけてＤＬＴ２０を設ける。ＤＬＴ２０はＬＬＣよりも、ビットエラー率が低いメモリであり、ＬＬＣは不揮発メモリデータ領域を有する。そして、ＬＬＣに新たにダーティなデータを書き込む際には、ＤＬＴ２０にも同じデータを書き込む。これにより、ＬＬＣから正しいデータを読み出せなくても、ＤＬＴ２０から正しいデータを読み出せるようになり、ＬＬＣに不揮発メモリデータ領域を設けたとしても、データの信頼性が低下するおそれはなくなる。不揮発メモリデータ領域としてＭＲＡＭを用いる場合、ＮＡＮＤ型フラッシュメモリよりも高集積化が可能であり、アクセス速度も速いため、ＬＬＣのアクセス性能を向上できる。
【００４６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４７】
１  キャッシュメモリシステム、２  ソケット、３  コア部、４  Ｌ２キャッシュバス、５  Ｌ２キャッシュ、６  Ｌ２キャッシュコントローラ、７  Ｌ２誤り検知訂正部、１１  ＣＰＵコア、１２  Ｌ１データキャッシュ、１３  Ｌ１データキャッシュコントローラ、１４  Ｌ１命令キャッシュ、１５  Ｉキャッシュコントローラ、１６  Ｌ３キャッシュバス、１７  Ｌ３キャッシュ、１８  Ｌ３キャッシュコントローラ、１９  Ｌ３誤り検知訂正部、２０  ＤＬＴ、２１  ＤＬＴコントローラ、２２  ＤＬＴ誤り検知訂正部、２３  メインメモリ、２４  メモリコントローラ、２５  ＭＡＩＮ誤り検知訂正部
【要約】      （修正有）【課題】不揮発メモリを用いながらも、信頼性およびアクセス性能を向上可能なメモリシステムを提供する。【解決手段】メモリシステム１は、不揮発メモリデータ領域を含む第１メモリ１７と、不揮発メモリデータ領域内のデータのうち、第１メモリよりもアクセス優先度の低い下位階層の第２メモリ２３への書き戻しを行っていないデータを、第２メモリに格納する前に格納する第３メモリ２０と、を備え、第３メモリのビットエラー率は、第１メモリのビットエラー率よりも低い。【選択図】図１【図１】
0006039772.tif 000002
【図２】
0006039772.tif 000003
【図３】
0006039772.tif 000004
【図４】
0006039772.tif 000005