(57)【要約】      （修正有）【課題】アクセス回数、経年劣化および環境変化により、不揮発メモリの誤り率が高くなっても、信頼性が低下しないようにしたキャッシュメモリシステムを提供する。【解決手段】キャッシュメモリシステム１は、読み書き可能なデータを格納する第１領域と、第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有するデータメモリ４を含む不揮発メモリ（キャッシュメモリ３）に、誤り訂正符号を生成するとともに、誤り訂正符号を用いて第１領域内のデータの誤り訂正を行う誤り訂正器８と、第１領域内のデータの誤り率を検出する誤り率検出器９と、誤り率に基づいて、不揮発メモリ内の第２領域のサイズを調整する領域サイズ調整部１０と、を備える。【選択図】図１
2017058953.tif 000002
【特許請求の範囲】
【請求項１】
読み書き可能なデータを格納する第１領域と、前記第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有する不揮発メモリと、
前記誤り訂正符号を生成するとともに、前記誤り訂正符号を用いて前記第１領域内のデータの誤り訂正を行う誤り訂正器と、
前記第１領域内のデータの誤り率を検出する誤り率検出器と、
前記誤り率に基づいて、前記不揮発メモリ内の前記第２領域のサイズを調整する領域サイズ調整部と、を備えるキャッシュメモリシステム。
【請求項２】
前記不揮発メモリは、キャッシュラインを単位としてデータの読出しおよび書き込みを行い、
前記誤り訂正器は、前記キャッシュラインを単位としてデータの誤り訂正を行い、
前記誤り率検出器は、前記キャッシュラインを単位として前記誤り率を検出し、
前記領域サイズ調整部は、前記キャッシュラインを単位として前記第２領域のサイズを調整する請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記不揮発メモリは、複数のウェイを有するセットアソシアティブ構造であり、
前記複数のウェイのそれぞれは、前記キャッシュラインのデータビット幅を有し、
前記領域サイズ調整部は、前記不揮発メモリの各セットごとに、前記誤り率に基づいて、ウェイを単位として前記第２領域のサイズを調整する請求項２に記載のキャッシュメモリシステム。
【請求項４】
前記不揮発メモリ内の前記第１領域に書き込まれたデータを定期的に読み出して、読み出したデータを前記誤り訂正器に供給する制御部を備え、
前記誤り率検出器は、前記制御部が読み出したデータに含まれる誤りに基づいて、前記誤り率を検出する請求項１乃至３のいずれか１項に記載のキャッシュメモリシステム。
【請求項５】
前記制御部は、前記第１領域内の各データごとに誤りの発生数を計測し、
前記誤り率検出器は、前記制御部にて計測された誤りの発生数に基づいて、前記第１領域内の各データの前記誤り率を検出する請求項４に記載のキャッシュメモリシステム。
【請求項６】
前記領域サイズ調整部は、前記誤り率が第１閾値未満であれば、前記第２領域を第１サイズとし、前記誤り率が前記第１閾値以上であれば、前記第２領域を前記第１サイズより大きい第２サイズとする請求項１乃至５のいずれか１項に記載のキャッシュメモリシステム。
【請求項７】
前記領域サイズ調整部は、前記誤り率が前記第１閾値より大きい第２閾値以上であれば、前記第１領域にデータを書き込む際に、このデータを前記不揮発メモリの下位階層のメモリに書き込む請求項６に記載のキャッシュメモリシステム。
【請求項８】
前記領域サイズ調整部は、所定の条件に基づいて、前記不揮発メモリ内で前記第２領域をシフトさせる請求項１乃至７のいずれか１項に記載のキャッシュメモリシステム。
【請求項９】
前記第２領域に対するアクセス回数を計測するアクセス回数計測器を備え、
前記領域サイズ調整部は、前記アクセス回数計測器で計測されたアクセス回数が所定回数に達すると、前記不揮発メモリ内で前記第２領域をシフトさせる請求項８に記載のキャッシュメモリシステム。
【請求項１０】
前記不揮発メモリは、前記第１領域および前記第２領域を有するデータキャッシュと、前記第１領域内のデータのアドレス情報を格納するタグメモリと、を有し、
前記タグメモリは、前記第２領域を有するか否かを示す第１情報と、前記第２領域の場所を特定する第２情報とを含む請求項１乃至９のいずれか１項に記載のキャッシュメモリシステム。
【請求項１１】
前記不揮発メモリは、複数のウェイを有するセットアソシアティブ構造であり、
セットごとにウェイ単位で前記第１領域または前記第２領域が設定され、
前記第１情報は、セットごとに設けられ、
前記第２情報は、各セットごとに、前記第２領域として割り当てられているウェイを特定する情報である請求項１０に記載のキャッシュメモリシステム。
【請求項１２】
前記不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）である請求項１乃至１１のいずれか１項に記載のキャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発メモリを備えたキャッシュメモリシステムに関する。
【背景技術】
【０００２】
ＳＲＡＭ（Static Random Access Memory）は待機電力が大きく価格も高いことから、不揮発メモリを用いたキャッシュメモリが検討されている。不揮発メモリの中でも、ＭＲＡＭ（Magnetoresistive Random Access Memory）は、書換耐性が高く、セル面積も小さくて高集積化が可能であるが、アクセス速度の観点では、ＳＲＡＭには及ばない。
【０００３】
また、ＭＲＡＭなどの不揮発メモリは、構成材料の状態変化を利用してデータの論理を保持するため、アクセス回数、経年劣化、および温度や湿度などの環境変化により、誤りの発生率（以下、誤り率）が高くなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１３１９５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、アクセス回数、経年劣化および環境変化により、不揮発メモリの誤り率が高くなっても、信頼性が低下しないようにしたキャッシュメモリシステムを提供するものである。
【課題を解決するための手段】
【０００６】
本実施形態では、読み書き可能なデータを格納する第１領域と、前記第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有する不揮発メモリと、
前記誤り訂正符号を生成するとともに、前記誤り訂正符号を用いて前記第１領域内のデータの誤り訂正を行う誤り訂正器と、
前記第１領域内のデータの誤り率を検出する誤り率検出器と、
前記誤り率に基づいて、前記不揮発メモリ内の前記第２領域のサイズを調整する領域サイズ調整部と、を備えるキャッシュメモリシステムが提供される。
【図面の簡単な説明】
【０００７】
【図１】一実施形態のキャッシュメモリシステムの概略構成を示すブロック図。
【図２】セットアソシアティブのキャッシュメモリの構造を示す図。
【図３】（ａ）〜（ｄ）は第１領域と第２領域のサイズを変える例を示す図。
【図４】キャッシュメモリの内部構成をより詳細に示すブロック図。
【図５】データのビット数と誤り訂正可能なビット数との関係を示す図。
【図６】タグメモリ内のタグ情報格納部に格納されるタグ情報の詳細情報を示す図。
【図７】図１にローテーション制御部を追加したブロック図。
【図８】信頼性制御部の処理動作の第１例を示すフローチャート。
【図９】図８のステップＳ１のリフレッシュ動作の詳細フローチャート。
【図１０】信頼性制御部の処理動作の第２例を示すフローチャート。
【図１１】各ウェイ内で第１領域と第２領域のサイズを可変調整可能にした例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の一実施形態を説明する。図１は一実施形態のキャッシュメモリシステム１の概略構成を示すブロック図である。図１のキャッシュメモリシステム１は、プロセッサ２に接続されたキャッシュメモリ３を備えている。プロセッサ２の内部には、不図示のコアと、不図示の１次キャッシュメモリ（以下、Ｌ１キャッシュ）とが内蔵されている。
【０００９】
図１のキャッシュメモリ３は、ＭＲＡＭ等の不揮発メモリを有する。図１のキャッシュメモリ３は、２階層以上の階層化されたキャッシュメモリ３でもよいが、以下では、簡略化のため、図１のキャッシュメモリ３が２次キャッシュメモリ（以下、Ｌ２キャッシュ）である例を示す。このＬ２キャッシュメモリ３は、不図示のメインメモリに接続されている。
【００１０】
図１のキャッシュメモリ３は、データメモリ４、タグメモリ５、キャッシュコントローラ６、および信頼性制御部７を有する。
【００１１】
データメモリ４は、例えば５１２ビットのキャッシュラインごとにデータを格納する。後述するように、データメモリ４は、プロセッサ２が読み書きを行うデータを格納する第１領域と、第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域とを有する。タグメモリ５は、データメモリ４の各キャッシュラインのアドレス情報などを格納する。
【００１２】
キャッシュコントローラ６は、プロセッサ２との間でデータの送受を行うキャッシュインタフェース部（キャッシュＩ／Ｆ）６ａを有する。キャッシュコントローラ６は、プロセッサ２からアクセス要求のあったアドレスに応じて、Ｌ２キャッシュへのデータの書き込みとＬ２キャッシュからのデータの読出しとを行う。
【００１３】
信頼性制御部７は、誤り訂正器８と、誤り率検出器９と、領域サイズ調整部１０とを有する。
【００１４】
誤り訂正器８は、データメモリ４の各キャッシュラインのデータを誤り訂正するのに必要な誤り訂正符号（ＥＣＣ：Error Correcting Code）を生成するとともに、誤り訂正符号を用いて各キャッシュラインのデータの誤り訂正を行う。
【００１５】
誤り率検出器９は、データメモリ４内の第１領域の各キャッシュラインのデータの誤り率を検出する。領域サイズ調整部１０は、誤り率検出器９で検出された誤り率に基づいて、不揮発メモリ内の第２領域のサイズを調整する。
【００１６】
この他、信頼性制御部７は、リフレッシュ制御部（制御部）１１を有する場合がありうる。リフレッシュ制御部１１は、データメモリ４内の第１領域に書き込まれたデータを定期的に読み出して誤り訂正器８に供給する。誤り訂正器８は、リフレッシュ制御部１１が読み出したデータに誤りがあるか否かを検出し、誤りがあれば誤り訂正を行う。
【００１７】
本実施形態によるキャッシュメモリ３は、セットアソシアティブ構造を有する。図２はセットアソシアティブのキャッシュメモリ３の構造を示す図である。図２に示すように、本実施形態によるキャッシュメモリ３は、複数のウェイに分かれている。各ウェイは、キャッシュライン分のデータビット幅を有する。複数のウェイの特定のセットは、プロセッサ２からアクセス要求のあったアドレスの一部であるインデックスアドレスにて選択される。特定のセットには、複数のウェイ数分のキャッシュラインが含まれている。キャッシュラインは、例えば５１２ビットである。
【００１８】
本実施形態では、インデックスアドレスにて選択された複数のウェイ数分のキャッシュラインのうち、任意の数のウェイを、誤り訂正符号を格納するための第２領域として使用できるようにしている。第２領域として使用するウェイの数は、インデックスアドレスごと、すなわちセットごとに可変としてもよい。このように、本実施形態では、セットごとに、ウェイ単位で、第１領域と第２領域のサイズを可変調整することができる。
【００１９】
図３（ａ）は１６ウェイのすべてを第１領域４ａとして使用する例である。図３（ｂ）は１６ウェイのうち１５ウェイを第１領域４ａとして使用し、残りの１ウェイを第２領域４ｂとして使用する例である。図３（ｃ）は１６ウェイのうち１４ウェイを第１領域４ａとして使用し、残りの２ウェイを第２領域４ｂとして使用する例である。図３（ｄ）は１６ウェイのうち１３ウェイを第１領域４ａとして使用し、残りの３ウェイを第２領域４ｂとして使用する例である。
【００２０】
図３（ｂ）の場合は、例えば第１領域４ａ内のデータの２５６ビットごとに１ビットの誤り訂正が可能である。すなわち、１キャッシュライン（１ウェイ）が５１２ビットであるとすると、１ウェイを半分のデータビット幅に分割して、各分割領域（２５６ビット）ごとに１ビットの誤り訂正を行えるため、１ウェイでは２ビットの誤り訂正が可能となる。
【００２１】
図３（ｃ）の場合は、例えば第１領域４ａ内のデータの６４ビットごとに１ビットの誤り訂正が可能である。この場合は、１ウェイを４分割し、各分割領域（６４ビット）ごとに１ビットの誤り訂正を行えるため、１ウェイでは４ビットの誤り訂正が可能となる。
【００２２】
図３（ｄ）の場合は、例えば第１領域４ａ内のデータの３２ビットごとに１ビットの誤り訂正が可能である。この場合は、１ウェイを８分割し、各分割領域（３２ビット）ごとに１ビットの誤り訂正を行えるため、１ウェイでは８ビットの誤り訂正が可能となる。
【００２３】
本実施形態では、後述するように、各セットごとに誤り率を検出し、誤り率に基づいて各セットごとに第１領域４ａと第２領域４ｂのサイズ（メモリ容量）をウェイ単位で調整する。これにより、誤り率が高いセットについては、第２領域４ｂのサイズを増やすことで、より多くの誤りを訂正でき、不揮発メモリの信頼性の低下を防止することができる。
【００２４】
図４はキャッシュメモリ３の内部構成をより詳細に示すブロック図である。タグメモリ５は、タグアドレス選択部２１と、タグ情報格納部２２と、ヒット判定部２３とを有する。タグアドレス選択部２１は、読み出すべきウェイを選択し、選択したウェイにアドレス情報を供給する。タグ情報格納部２２は、データメモリ４内の各データに対応するタグ情報を格納する。ヒット判定部２３は、タグ情報格納部２２から読み出したタグ情報を、プロセッサ２からアクセス要求のあったブロックアドレス内のインデックスアドレスとを比較し、ヒット／ミス判定信号を出力する。
【００２５】
タグ情報格納部２２は、第１領域４ａ内のデータのアドレス情報の他に、第２領域４ｂを有するか否かを示す情報（ＥＣＣフラグ情報、第１情報）と、第２領域４ｂとして使われているウェイを特定する情報（第２情報）とを格納する。
【００２６】
データメモリ４は、データ格納部２６と、書込み部２７と、読出し部２８とを有する。データ格納部２６は、複数のウェイに分かれており、ウェイ単位で、データの書き込みまたは読出しを行う。書込み部２７は、データメモリ４に書き込むべきウェイを選択して、選択したウェイに書き込むべきデータを供給する。読出し部２８は、データメモリ４から読み出すべきウェイを選択して、選択したウェイから読み出すべきデータを供給する。
【００２７】
図４のＥＣＣ生成器８ａと誤り訂正部８ｂは、図１の誤り訂正器８に内蔵されるものである。ＥＣＣ生成器８ａは、データメモリ４に書き込むべきデータの誤り訂正符号を生成する。誤り訂正部８ｂは、データメモリ４から読み出したデータの誤り訂正を行う。
【００２８】
図５はデータのビット数と誤り訂正可能なビット数との関係を示す図である。図５は１つのウェイ（キャッシュライン）が５１２ビットの例を示している。本実施形態では、誤り訂正能力を可変できるようにしており、それぞれ異なる誤り訂正能力をＥＣＣモード１〜ＥＣＣモード４としている。
【００２９】
ＥＣＣモード１は、５１２ビットデータ内の１ビットの誤りを訂正するモードである。５１２ビットデータ内の１ビットの誤りを訂正するには、例えば１１ビットの誤り訂正符号を必要とする。よって、１５個のウェイのそれぞれについて１ビットの誤りを訂正するには、第２領域４ｂに１１×１５＝１６５ビットの誤り訂正符号を格納しておく必要がある。
【００３０】
ＥＣＣモード２は、２５６ビットデータ内の１ビットの誤りを訂正するモードである。２５６ビットデータ内の１ビットの誤りを訂正するには、例えば１０ビットの誤り訂正符号を必要とする。よって、５１２ビットデータでは、２ビットの誤りを訂正可能となり、これらの誤りを訂正するには、１０×２＝２０ビットの誤り訂正符号を必要とする。よって、第１領域４ａ内の１５個のウェイのそれぞれについて２ビットまでの誤りを訂正するには、第２領域４ｂには、２０×１５＝３００ビットの誤り訂正符号を格納しておく必要がある。
【００３１】
ＥＣＣモード３は、１２８ビットデータ内の１ビットの誤りを訂正するモードである。１２８ビットデータ内の１ビットの誤りを訂正するには、例えば９ビットの誤り訂正符号を必要とする。よって、５１２ビットデータでは、４ビットの誤りを訂正可能となり、これらの誤りを訂正するには、９×４＝３６ビットの誤り訂正符号を必要とする。よって、第１領域４ａ内に１５個のウェイがあったとして、各ウェイごとに４ビットまでの誤りを訂正するには、第２領域４ｂには、３６×１５＝５４０ビットの誤り訂正符号を格納しておく必要がある。第２領域４ｂが１個のウェイを有する場合、最大５１２ビットの情報しか格納できない。よって、第２領域４ｂとして２個のウェイを必要とする。この場合、第１領域４ａは１４個のウェイとなり、３６×１４＝５０４ビットの誤り訂正符号を第２領域４ｂに格納することになる。
【００３２】
ＥＣＣモード４は、６４ビットデータ内の１ビットの誤りを訂正するモードである。６４ビットデータ内の１ビットの誤りを訂正するには、例えば８ビットの誤り訂正符号を必要とする。よって、５１２ビットデータでは、８ビットの誤りを訂正可能となり、これらの誤りを訂正するには、８×８＝６４ビットの誤り訂正符号を必要とする。第１領域４ａが１４個のウェイを有するとすると、第２領域４ｂには、６４×１４＝８９６ビットの誤り訂正符号を格納しておく必要がある。
【００３３】
このように、誤り訂正能力によって、必要とする誤り訂正符号のビット数が変わるため、誤り訂正能力に応じて第１領域４ａと第２領域４ｂのサイズを可変調整する必要がある。この可変調整は、図１の領域サイズ調整部１０が行う。
【００３４】
図６はタグメモリ５内のタグ情報格納部２２に格納されるタグ情報の詳細情報を示す図である。タグ情報格納部２２は、各セットごとにタグ情報を格納する。タグ情報は、図６に示すように、Ｖａｌｉｄ情報３１と、Ｄｉｒｔｙ情報３２と、ＬＲＵ情報３３と、Ｓｅｃ情報３４と、ＥＣＣフラグ情報３５と、アドレス情報３６とを含んでいる。
【００３５】
Ｖａｌｉｄ情報３１は、対応する第１領域４ａ内のデータが有効か否かを示す情報である。Ｄｉｒｔｙ情報３２は、対応する第１領域４ａ内のデータを下位階層のメモリにライトバックする必要があるか否かを示す情報である。ＬＲＵ情報３３は、対応する第１領域４ａ内のデータがＬＲＵ（Least Recently Used）データであるか否かを示す情報である。Ｓｅｃ情報３４は、対応する第１領域４ａ内のデータのセキュリティ情報である。ＥＣＣフラグ情報は、対応する第１領域４ａ内のデータが第１領域４ａだけでなく、第２領域４ｂを有するか否かを示す情報を格納する。ＥＣＣフラグ情報３５は、誤り訂正能力を示す誤り訂正モードを特定する情報（以下、ＥＣＣモード）と、第２領域４ｂのローテーション情報とを含んでいてもよい。ＥＣＣモードは、例えば図５に示した４つのモードを含めて複数のモードのうちのいずれかを選択するものである。例えば、全部で８つのモードがある場合には、ＥＣＣモードとして３ビットが必要となる。ローテーション情報は、誤り訂正符号を格納する第２領域４ｂを不揮発メモリ内で定期的にシフトさせるためのものである。これにより、不揮発メモリ内のアクセス頻度を均等にすることができ、不揮発メモリの書込み耐性を高めることができる。例えば、キャッシュメモリ３が１６個のウェイを有し、各ウェイを順繰りに第２領域４ｂとして用いる場合、１６個の選択肢があるため、いずれか一つのウェイを選択するのに４ビットが必要となる。
【００３６】
よって、ＥＣＣフラグ情報３５は、例えば、ＥＣＣモードとして３ビット、ローテーション情報として４ビットが必要となり、最低７ビットが必要となる。
【００３７】
信頼性制御部７は、リフレッシュ制御部１１にて不揮発メモリのリフレッシュを行う際に読み出したデータの誤り率を誤り率検出器９にて検出し、検出した誤り率に基づいて、領域サイズ調整部１０にて第１領域４ａと第２領域４ｂのサイズを調整することができる。
【００３８】
第２領域４ｂのローテーションを行うには、図７に示すように、信頼性制御部７の内部にローテーション制御部１２と、ローテーション制御用のカウンタ（アクセス回数計測器）１２ａとを設けるのが望ましい。このカウンタ１２ａは、第２領域４ｂのアクセス回数を計測する。ローテーション制御部１２は、カウンタ１２ａで計測したアクセス回数が所定の閾値を超えると、第２領域４ｂを別のウェイにシフトする。
【００３９】
図８は信頼性制御部７の処理動作の第１例を示すフローチャートである。まず、リフレッシュ動作を行う（ステップＳ１）。図９は図８のステップＳ１のリフレッシュ動作の詳細フローチャートである。図９のフローチャートは、リフレッシュ制御部１１にて行われる。まず、リフレッシュ対象のデータを読み出す（ステップＳ１１）。リフレッシュ対象のデータとは、例えば不揮発メモリの第１領域４ａに書き込んでから所定時間が経過したデータである。このデータは、第１領域４ａに書き込んでから所定時間が経過した後、定期的にリフレッシュ対象となる。
【００４０】
次に、ステップＳ１１で読み出したデータを誤り訂正器８に供給する。誤り訂正器８は、リフレッシュ対象のデータの誤り訂正符号を用いて、このデータに誤りがあるか否かを検出する（ステップＳ１２）。誤り訂正器８は、誤りが検出された場合は、誤り訂正符号を用いて誤り訂正を行う（ステップＳ１３）。ステップＳ１３の処理が終了すると、誤り回数を計測するカウンタ１１ａをカウントアップする（ステップＳ１４）。
【００４１】
ステップＳ１２で誤りがないと判定された場合、あるいはステップＳ１４の処理が終了すると、次のリフレッシュ対象のアドレスを選択する（ステップＳ１５）。
【００４２】
図９のステップＳ１の処理、すなわちリフレッシュ対象のデータのリフレッシュ動作が終了すると、誤り率検出器９は、ステップＳ１４でカウントアップしたカウンタで計測した誤り回数に基づいて、誤り率を検出する（ステップＳ２）。次に、領域サイズ調整部１０は、誤り率が第１閾値以上か否かを判定し（ステップＳ３）、第１閾値以上の場合は、誤り訂正能力を増強するべくＥＣＣモードを変更する（ステップＳ４）。この場合、領域サイズ調整部１０は、第２領域４ｂのサイズを第１サイズから、より大きい第２サイズに変更する。
【００４３】
次に、領域サイズ調整部１０は、誤り率が第１閾値より小さい第２閾値未満か否かを判定し（ステップＳ５）、誤り率が第２閾値未満の場合は、誤り訂正能力を低下するべくＥＣＣモードを変更する（ステップＳ６）。誤り率が第２閾値以上の場合は、ＥＣＣモードを現状維持とする（ステップＳ７）。
【００４４】
次に、リフレッシュ対象アドレスのすべてについてのリフレッシュ動作が終了したか否かを判定する（ステップＳ８）。まだ終わっていないリフレッシュ対象アドレスがあれば、ステップＳ１以降の処理を繰り返し、すべてのリフレッシュ対象アドレスについてのリフレッシュ動作が終了したら、図８の処理を終了する。
【００４５】
信頼性制御部７の処理動作は図８に示したものに限定されない。例えば、信頼性制御部７は、信頼性が著しく低いセットについては、セット内の書込みデータを下位階層のメモリにもライトスルーで書き込んでもよい。図１０は信頼性制御部７の処理動作の第２例を示すフローチャートである。まず、図９と同様の処理にてリフレッシュ動作を行う（ステップＳ２１）。リフレッシュ対象のデータのリフレッシュ動作が終了すると、次に誤り率を検出し（ステップＳ２２）、誤り率が第１閾値よりも大きい第３閾値以上か否かを判定する（ステップＳ２３）。誤り率が第３閾値以上の場合には、エラー訂正を行うとともに、このデータを下位階層のメモリにライトスルーで書き込む（ステップＳ２４）。その際、ＥＣＣモードを変更して、誤り訂正能力を向上させてもよい。
【００４６】
ステップＳ２３で誤り率が第３閾値未満と判定されると、次に誤り率が第１閾値以上か否かを判定する（ステップＳ２５）。その後、図８のステップＳ３〜Ｓ８と同様の処理を行う（ステップＳ２５〜Ｓ３０）。
【００４７】
上述した実施形態では、セットごとに、ウェイ単位で第１領域４ａと第２領域４ｂのサイズを可変調整する例を説明したが、図１１に示すように、各ウェイ内で第１領域４ａと第２領域４ｂのサイズを可変調整してもよい。例えば、１つのウェイが５１２ビットの場合、５１２ビットのうちの一部のビットを第１領域４ａとし、残りのビットを第２領域４ｂとしてもよい。
【００４８】
このように、本実施形態では、不揮発メモリの第１領域４ａ内のデータの誤り率に基づいて、誤り訂正符号を格納する第２領域４ｂのサイズを調整するため、第１領域４ａ内のデータの誤り率が大きい場合には誤り訂正符号を増やすことができ、第１領域４ａ内のデータを正しく誤り訂正できる可能性が高くなる。これにより、アクセス回数や経年劣化、温度などの環境条件によって不揮発メモリの誤り率が高くなっても、実用上問題なく不揮発メモリを使用することができる。
【００４９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５０】
１  キャッシュメモリシステム、２  プロセッサ、３  キャッシュメモリ、４  データメモリ、５  タグメモリ、６  キャッシュコントローラ、７  信頼性制御部、８  誤り訂正器、９  誤り率検出器、１１  リフレッシュ制御部、１２  ローテーション制御部、２１  タグアドレス選択部、２２  タグ情報格納部、２３  ヒット判定部、２６  データ格納部、２７  書込み部、２８  読出し部
【図１】
2017058953.tif 000003
【図２】
2017058953.tif 000004
【図３】
2017058953.tif 000005
【図４】
2017058953.tif 000006
【図５】
2017058953.tif 000007
【図６】
2017058953.tif 000008
【図７】
2017058953.tif 000009
【図８】
2017058953.tif 000010
【図９】
2017058953.tif 000011
【図１０】
2017058953.tif 000012
【図１１】
2017058953.tif 000013
【手続補正書】
【提出日】平成29年1月10日(2017.1.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
読み書き可能なデータを格納する第１領域と、前記第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有する不揮発メモリと、
前記誤り訂正符号を生成するとともに、前記誤り訂正符号を用いて前記第１領域内のデータの誤り訂正を行う誤り訂正器と、
前記第１領域内のデータの誤り率に基づいて、前記不揮発メモリ内の前記第２領域のサイズを調整するとともに、所定の条件に基づいて、前記不揮発メモリ内で前記第２領域をシフトさせる領域サイズ調整部と、を備えるキャッシュメモリシステム。
【請求項２】
前記第２領域に対するアクセス回数を計測するアクセス回数計測器を備え、
前記領域サイズ調整部は、前記アクセス回数計測器で計測されたアクセス回数が所定回数に達すると、前記不揮発メモリ内で前記第２領域をシフトさせる請求項１に記載のキャッシュメモリシステム。
【請求項３】
読み書き可能なデータを格納する第１領域と、前記第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有する不揮発メモリと、
前記誤り訂正符号を生成するとともに、前記誤り訂正符号を用いて前記第１領域内のデータの誤り訂正を行う誤り訂正器と、
前記第１領域内のデータの誤り率に基づいて、前記不揮発メモリ内の前記第２領域のサイズを調整する領域サイズ調整部と、を備え、
前記不揮発メモリは、前記第１領域および前記第２領域を有するデータキャッシュと、前記第１領域内のデータのアドレス情報を格納するタグメモリと、を有し、
前記タグメモリは、前記第２領域を有するか否かを示す第１情報と、前記第２領域の場所を特定する第２情報とを含むキャッシュメモリシステム。
【請求項４】
前記不揮発メモリは、複数のウェイを有するセットアソシアティブ構造であり、
セットごとにウェイ単位で前記第１領域または前記第２領域が設定され、
前記第１情報は、セットごとに設けられ、
前記第２情報は、各セットごとに、前記第２領域として割り当てられているウェイを特定する情報である請求項３に記載のキャッシュメモリシステム。
【請求項５】
読み書き可能なデータを格納する第１領域と、前記第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有する不揮発メモリと、
前記誤り訂正符号を生成するとともに、前記誤り訂正符号を用いて前記第１領域内のデータの誤り訂正を行う誤り訂正器と、
前記第１領域内のデータの誤り率が第１の誤り率の場合の前記第１領域のサイズは、前記誤り率が前記第１の誤り率よりも小さい第２の誤り率の場合の前記第１領域のサイズよりも小さく、かつ前記誤り率が前記第１の誤り率の場合の前記第２領域のサイズは、前記誤り率が前記第２の誤り率の場合の前記第２領域のサイズよりも大きくなるように、前記第１領域および前記第２領域を調整する領域サイズ調整部と、を備えるキャッシュメモリシステム。
【請求項６】
読み書き可能なデータを格納する第１領域と、前記第１領域内のデータの誤りを訂正するための誤り訂正符号を格納する第２領域と、を有する不揮発メモリと、
前記誤り訂正符号を生成するとともに、前記誤り訂正符号を用いて前記第１領域内のデータの誤り訂正を行う誤り訂正器と、
第１の誤り率の場合、第１領域のサイズを第１サイズから第１サイズより小さい第２サイズへと変化させ、かつ第２領域を第３サイズから第３サイズより大きい第４サイズへと変化させ、第１の誤り率より小さな第２の誤り率の場合、第１領域のサイズを第５サイズから第５サイズより大きい第６サイズへと変化させ、かつ第２領域を第７サイズから第７サイズより小さい第８サイズへと変化させるように、前記第１領域および前記第２領域を調整する領域サイズ調整部と、を備えるキャッシュメモリシステム。
【請求項７】
前記不揮発メモリは、キャッシュラインを単位としてデータの読出しおよび書き込みを行い、
前記誤り訂正器は、前記キャッシュラインを単位としてデータの誤り訂正を行い、
前記領域サイズ調整部は、前記キャッシュラインを単位とする前記誤り率に基づいて前記第２領域のサイズを調整する請求項１乃至６のいずれか１項に記載のキャッシュメモリシステム。
【請求項８】
前記不揮発メモリは、複数のウェイを有するセットアソシアティブ構造であり、
前記複数のウェイのそれぞれは、前記キャッシュラインのデータビット幅を有し、
前記領域サイズ調整部は、前記不揮発メモリの各セットごとに、前記誤り率に基づいて、ウェイを単位として前記第２領域のサイズを調整する請求項７に記載のキャッシュメモリシステム。
【請求項９】
前記不揮発メモリ内の前記第１領域に書き込まれたデータを定期的に読み出して、読み出したデータを前記誤り訂正器に供給する制御部を備える請求項１乃至８のいずれか１項に記載のキャッシュメモリシステム。
【請求項１０】
前記第１誤り率は、第１閾値以上の値であり、
前記第２誤り率は、前記第１閾値未満の値であり、
前記領域サイズ調整部は、前記誤り率が前記第１閾値以上の場合の前記第２領域のサイズを、前記誤り率が前記第１閾値未満の場合の前記第２領域のサイズよりも大きくする
請求項１乃至９のいずれか１項に記載のキャッシュメモリシステム。
【請求項１１】
前記領域サイズ調整部は、前記誤り率が前記第１閾値より大きい第２閾値以上であれば、前記第１領域にデータを書き込む際に、このデータを前記不揮発メモリの下位階層のメモリに書き込む請求項１０に記載のキャッシュメモリシステム。
【請求項１２】
前記領域サイズ調整部は、所定の条件に基づいて、前記不揮発メモリ内で前記第２領域をシフトさせる請求項３乃至１１のいずれか１項に記載のキャッシュメモリシステム。
【請求項１３】
前記第２領域に対するアクセス回数を計測するアクセス回数計測器を備え、
前記領域サイズ調整部は、前記アクセス回数計測器で計測されたアクセス回数が所定回数に達すると、前記不揮発メモリ内で前記第２領域をシフトさせる請求項１、２または１２に記載のキャッシュメモリシステム。
【請求項１４】
前記不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）を含む請求項１乃至１３のいずれか１項に記載のキャッシュメモリシステム。