(57)【要約】 【課題】キャッシュメモリのエラーでメモリアクセスが正常に行えなくなる障害を未然に防止する。【解決手段】メモリ制御回路は、キャッシュメモリに書き込んだデータまたはキャッシュメモリから読み出したデータにエラーが含まれるか否かを検知するエラー検知部と、エラー検知部で検知されたエラーを訂正するエラー訂正部と、キャッシュメモリへのデータ書込時に書き込んだデータをベリファイのために読み出したデータ、あるいはキャッシュメモリからのデータ読み出し時に読み出したデータにエラーが含まれることがエラー検知部で検知された場合には、エラービット数がエラー訂正部で訂正可能な最大エラービット数に基づいて設定される所定の閾値より大きいか否かを判定するエラー判定部と、エラー判定部での判定結果に基づいて、キャッシュメモリよりも低次のメモリにアクセスするか否かと、エラー訂正部によるエラー訂正を行うか否かと、を制御するアクセス制御部と、を備える。【選択図】図１
2015052938.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリに書き込んだデータまたは前記キャッシュメモリから読み出したデータにエラーが含まれるか否かを検知するエラー検知部と、
前記エラー検知部で検知されたエラーを訂正するエラー訂正部と、
前記キャッシュメモリへのデータ書込時に書き込んだデータをベリファイのために読み出したデータ、あるいは前記キャッシュメモリからのデータ読み出し時に読み出したデータにエラーが含まれることが前記エラー検知部で検知された場合には、エラービット数が前記エラー訂正部で訂正可能な最大エラービット数に基づいて設定される所定の閾値より大きいか否かを判定するエラー判定部と、
前記エラー判定部での判定結果に基づいて、前記キャッシュメモリよりも低次のメモリにアクセスするか否かと、前記エラー訂正部によるエラー訂正を行うか否かと、を制御するアクセス制御部と、を備えるメモリ制御回路。
【請求項２】
前記エラー判定部は、前記キャッシュメモリへのデータ書込時に、書き込んだデータを読み出してベリファイするとともに、読み出したデータにエラーが含まれることが前記エラー検知部で検知された場合には、前記エラービット数が前記閾値より大きいか否かを判定し、
前記アクセス制御部は、前記エラービット数が前記閾値より大きいと判定された場合には、前記キャッシュメモリに書き込むべきデータを、ライトスルーモードにて前記低次のメモリに書き込む請求項１に記載のメモリ制御回路。
【請求項３】
前記エラー判定部は、前記キャッシュメモリからのデータ読み出し時に読み出したデータにエラーが含まれることが前記エラー検知部で検知された場合には、前記エラービット数が前記閾値より大きいか否かを判定し、
前記アクセス制御部は、前記エラービット数が前記閾値より大きいと判定された場合には、読み出した前記キャッシュメモリ内のデータがまだ書き戻されていなければ、該データを前記低次のメモリに書き戻す請求項１または２に記載のメモリ制御回路。
【請求項４】
前記キャッシュメモリは、磁気抵抗効果素子の抵抗変化をデータの記憶に利用する複数のＭＲＡＭ（Magnetoresistive RAM）セルを含んでおり、
前記磁気抵抗効果素子が高抵抗の場合と低抵抗の場合との中間の抵抗値を有する参照セルと、
前記エラー検知部でエラーが検知されない場合と、前記エラー検知部で検知されたエラービット数が前記閾値以下の場合とでは、一対のＭＲＡＭセルに接続され差動信号が流れる一対のビット線の電圧差に基づいて前記キャッシュメモリから読み出したデータの論理を決定し、前記エラー検知部で検知されたエラービット数が前記閾値より大きい場合には、ビット線のそれぞれごとに前記参照セルと比較した結果に基づいて前記キャッシュメモリから読み出したデータの論理を決定するデータ読み出し部と、を備え、
前記エラー訂正部は、前記エラービット数が前記閾値より大きい場合には、前記ビット線のそれぞれごとに前記参照セルと比較した結果に基づいて前記データ読み出し部にて決定したデータに基づいてエラーを訂正し、
前記アクセス制御部は、前記エラービット数が前記閾値より大きい場合に前記エラー訂正部でエラー訂正できなかった場合は、前記低次のメモリからデータを取得する請求項１乃至３のいずれかに記載のメモリ制御回路。
【請求項５】
アクセス要求のあったアドレスのデータが前記キャッシュメモリに格納されているか否かを判定するヒット判定部と、
前記ヒット判定部により格納されていないと判定された場合に、前記キャッシュメモリへの書き込みを行うか、または読み出しを行うかを判定する第１読み書き判定部と、を備え、
前記アクセス制御部は、前記第１読み書き判定部により読み出しを行うと判定されると、前記低次のメモリから該当するアドレスのデータを読み出して前記キャッシュメモリに書き込みを行い、前記第１読み書き判定部により書き込みを行うと判定されると、書き込むべきデータを前記キャッシュメモリに書き込むとともに、前記キャッシュメモリに書き込んだデータを読み出してベリファイし、検出されたエラービット数が前記閾値以下であれば、ライトバックモードに設定し、前記エラービット数が前記閾値より大きければ、ライトスルーモードに設定して前記低次のメモリにも前記キャッシュメモリに書き込むべきデータを書き込む請求項１乃至４のいずれかに記載のメモリ制御回路。
【請求項６】
前記ヒット判定部により格納されていると判定された場合に、前記キャッシュメモリへの書き込みを行うか、または前記キャッシュメモリからの読み出しを行うかを判定する第２読み書き判定部を備え、
前記アクセス制御部は、前記第２読み書き判定部により書き込みを行うと判定されると、書き込むべきデータを前記キャッシュメモリに書き込むとともに、前記キャッシュメモリに書き込んだデータを読み出してベリファイし、検出されたエラービット数が前記閾値以下であれば、ライトバックモードに設定し、前記エラービット数が前記閾値より大きければ、ライトスルーモードに設定して前記低次のメモリにも前記キャッシュメモリに書き込むべきデータを書き込む請求項５に記載のメモリ制御回路。
【請求項７】
前記エラー判定部は、前記第２読み書き判定部により読み出しを行うと判定されると、アクセス要求のあったアドレスのデータを前記キャッシュメモリから読み出してエラービットがあるか否かを判定するとともに、エラービットがある場合には、該エラービット数が前記閾値以下か否かを判定し、
前記アクセス制御部は、前記エラー判定部により前記エラービット数が前記閾値以下と判定されると、エラー訂正を行ったデータを、前記低次のメモリに伝送するとともに、前記キャッシュメモリ内のデータを更新する請求項６に記載のメモリ制御回路。
【請求項８】
前記エラー判定部は、前記エラービット数が前記閾値より大きいと判定すると、前記キャッシュメモリ内の個々のメモリセルのデータを参照セルと比較して、読み出し要求のあったアドレスのデータを特定し、特定したデータに基づいてエラー訂正可能か否かを判定し、
前記アクセス制御部は、前記エラー判定部により、エラー訂正不可能と判定されると、前記低次のメモリから該当するアドレスのデータを読み出し、エラー訂正可能と判定されると、前記特定したデータに基づいてエラー訂正する請求項７に記載のメモリ制御回路。
【請求項９】
前記閾値は、前記最大エラービット数以下の値である請求項１乃至８のいずれかに記載のメモリ制御回路。
【請求項１０】
前記エラー検知部は、前記キャッシュメモリ内のメモリセルについて、定期的にエラーが含まれるか否かを検知し、
前記アクセス制御部は、前記キャッシュメモリ内のメモリセルについて、定期的に前記エラー検知部、前記エラー訂正部および前記エラー判定部を動作させて、前記キャッシュメモリに格納されたデータを前記低次のメモリに書き込むか否かを制御する請求項１乃至９のいずれかに記載のメモリ制御回路。
【請求項１１】
低次のメモリよりもアクセス速度が高速で、かつ前記低次のメモリに格納されるべきデータの少なくとも一部を格納するキャッシュアレイ部と、
前記キャッシュアレイ部に書き込んだデータまたは前記キャッシュアレイ部から読み出したデータにエラーが含まれるか否かを検知するエラー検知部と、
前記エラー検知部で検知されたエラーを訂正するエラー訂正部と、
前記キャッシュアレイ部へのデータ書込時に書き込んだデータをベリファイのために読み出したデータ、あるいは前記キャッシュアレイ部からのデータ読み出し時に読み出したデータにエラーが含まれることが前記エラー検知部で検知された場合には、エラービット数が前記エラー訂正部で訂正可能な最大エラービット数に基づいて設定される所定の閾値より大きいか否かを判定するエラー判定部と、
前記エラー判定部での判定結果に基づいて、前記低次のメモリにアクセスするか否かと、前記エラー訂正部によるエラー訂正を行うか否かと、を制御するアクセス制御部と、を備えるキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリを制御するメモリ制御回路と、メモリ制御回路を内蔵するキャッシュメモリとに関する。
【背景技術】
【０００２】
携帯情報端末に用いられるプロセッサは低消費電力であることが求められる。プロセッサの低消費電力化の手法の1つとして、待機電力の大きいＳＲＡＭ（Static Random Access Memory）を用いたキャッシュメモリを、不揮発性素子を用いた不揮発性メモリで置き換える検討が進められている。例えば、ＭＲＡＭ（Magnetoresistive RAM）は、現在提案されている不揮発性メモリの中で高い書き換え耐性と、高速に読出しと書込みを行う動作性能と、高集積可能なセル面積の３つの利点を同時に併せ持つメモリである。ＭＲＡＭは、他の不揮発性メモリに比べて高速であり、面積効率が従来のメモリより優れており、大容量化が可能であることから、ＭＲＡＭをキャッシュメモリとして利用するべくプロセッサに実装することが期待されている。
【０００３】
しかしながら、高速動作が可能とされるＭＲＡＭの書き込みの信頼性とデータリテンション（データ保持）の信頼性は、従来のキャッシュメモリであるＳＲＡＭと比べると明らかに低い。また、電源遮断などを考慮に入れて要求されるデータ保持期間が数秒以上と長くなると、時間の長さに応じてデータ保持の信頼性が劣化する。
【０００４】
ＭＲＡＭをキャッシュメモリとして利用するには、ＭＲＡＭのデバイスばらつきによるエラーを訂正するために、ＥＣＣ（Error Check and Correct）によるエラー訂正機構を実装する必要がある。ところが、ＥＣＣによるエラー訂正処理は、面積オーバーヘッドとレイテンシオーバーヘッドが大きいため、キャッシュメモリの特性に合わせたＥＣＣの実装が必要である。
【０００５】
ＭＲＡＭのエラーの要因は、初期不良、書込み不良、リテンション不良、読出し不良の４つである。初期不良がデバイスの製造起因で生じた場合、ＥＣＣで必ず訂正する必要があり、またランタイムエラーに対処するために冗長ビットを追加しなければならない。
【０００６】
ＭＲＡＭに限らずキャッシュメモリにおけるＥＣＣ処理では、訂正できないエラーが発生した場合、エラー終了として処理され、実行中のプログラムを再起動する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−２４０６２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、キャッシュメモリのエラーでメモリアクセスが正常に行えなくなる障害を未然に防止可能なメモリ制御回路およびキャッシュメモリを提供することである。
【課題を解決するための手段】
【０００９】
本実施形態では、キャッシュメモリに書き込んだデータまたは前記キャッシュメモリから読み出したデータにエラーが含まれるか否かを検知するエラー検知部と、
前記エラー検知部で検知されたエラーを訂正するエラー訂正部と、
前記キャッシュメモリへのデータ書込時に書き込んだデータをベリファイのために読み出したデータ、あるいは前記キャッシュメモリからのデータ読み出し時に読み出したデータにエラーが含まれることが前記エラー検知部で検知された場合には、エラービット数が前記エラー訂正部で訂正可能な最大エラービット数に基づいて設定される所定の閾値より大きいか否かを判定するエラー判定部と、
前記エラー判定部での判定結果に基づいて、前記キャッシュメモリよりも低次のメモリにアクセスするか否かと、前記エラー訂正部によるエラー訂正を行うか否かと、を制御するアクセス制御部と、を備えるメモリ制御回路が提供される。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係るキャッシュメモリ１の概略構成を示すブロック図。
【図２】（ａ）は１Ｔ−１Ｒタイプの一例を示す回路図、（ｂ）は２Ｔ−２Ｒタイプの一例を示す回路図。
【図３】データ読み出し部４の内部構成の一例を示すブロック図。
【図４】キャッシュコントローラ１２の処理動作の一例を示すフローチャート。
【図５】ステップＳ４の詳細な処理手順の一例を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、本発明の実施形態について説明する。
図１は一実施形態に係るキャッシュメモリ１の概略構成を示すブロック図である。図１のキャッシュメモリ１は、タグアレイ２と、データアレイ３と、データ読み出し部４と、第１比較回路５と、第２比較回路６と、選択回路７と、タグ一致信号生成部８と、ヒット判定部９と、ＥＣＣエラー検知部１０と、ＥＣＣエラー訂正部１１と、キャッシュコントローラ１２とを備えている。図１のキャッシュメモリ１のうち、少なくとも、ＥＣＣエラー検知部１０、ＥＣＣエラー訂正部１１、およびキャッシュコントローラ１２がメモリ制御回路に該当する。
【００１２】
タグアレイ２は、データアレイ３に格納される各データに対応するアドレスを格納する。タグアレイ２は、データアレイ３よりも頻繁にアクセスされるため、高い信頼性が要求される。このため、タグアレイ２内に格納されるアドレスのビット列には、ＥＣＣビットが所定のビット数分付加されている。ＥＣＣビットの数を増やすほど、訂正可能なエラービット数の数を増やすことができる。
【００１３】
図１では、タグアレイ２については、ＥＣＣエラー検知部１０とＥＣＣエラー訂正部１１を省略しているが、タグアレイ２内のアドレスのビット列にＥＣＣビットが付加されている場合は、タグアレイ２用のＥＣＣエラー検知部とＥＣＣエラー訂正部が必要となる。
【００１４】
データアレイ３は、セットアソシアティブであり、複数のウェイに分けてデータを格納する。各データのビット列は、ウェイごとの粒度（例えば５１２ビット幅）を有し、このビット列にＥＣＣビットが付加されている。
【００１５】
ＥＣＣでは、例えばハミング符号を用いたＢＣＨ符号などを用いることができる。ＢＣＨ符号を用いた場合、ＥＣＣのために追加するビット数に応じてＥＣＣの信頼性が変動する。ＥＣＣの演算では、ＸＯＲ（排他的論理和）しか用いない。一つのウェイが５１２ビットで構成されている場合、１２８ビットごとにデータを４つに分けて、１２８ビットのビット列に対して例えば１４ビットのＥＣＣビットを付加する。この場合、データビットとＥＣＣビットを合わせたビット列の中に、ビットエラーが一つもなければ、エラーなしと判定できる。また、ビットエラーが一つだけあれば、ビットエラーが起こったことを検出できるとともに、どのビットがエラーを起こしたかを特定できる。この場合、エラーを起こしたビットを反転させることで、エラーを訂正できる。ビットエラーが二箇所にあれば、エラーが起きたことは検出できるが、どのビットでエラーが起きたかは特定できない。したがって、エラー訂正を行うことはできない。一方、ビットエラーが三箇所以上にあれば、エラーが起きたかどうかも正しく認識できず、誤った情報をプロセッサに返してしまう。
【００１６】
ＥＣＣのビット数を増減したり、データビット数の数を変更することで、ＥＣＣエラーの信頼度を変えることができる。
【００１７】
図１のデータ読み出し部４は、後述するように、データアレイ３の複数のビット線の中から、読み出しを行うメモリセルの接続されたビット線を選択し、選択したビット線の電圧をセンスする。
【００１８】
図１の第１比較回路５と第２比較回路６はそれぞれ、プロセッサがアクセス要求したアドレスの上位側ビット列であるタグビットを、タグアレイ２に格納されているタグビットと比較する。２種類の第１比較回路５と第２比較回路６が設けられている理由は、タグアレイ２が２つのウェイに分かれているためであり、ウェイの数分の比較部が必要となる。
【００１９】
タグ一致信号生成部８は、第１比較回路５と第２比較回路６の双方で一致が検出されると、アドレスが一致したことを示す信号を出力する。
【００２０】
選択回路７は、第１比較回路５と第２比較回路６の一方で一致が検出されると、一致したアドレスに基づいて、データアレイ３内の特定のウェイから対応するデータを読み出す。
【００２１】
ＥＣＣエラー検知部１０は、選択回路７が読み出したデータに含まれるＥＣＣビットを用いて、このデータにエラーがあるか否かを検知する。ＥＣＣエラー訂正部１１は、ＥＣＣエラー検知部１０が検知したエラーを訂正する。ＥＣＣエラー検知部１０でエラーが検知されなかった場合は、データアレイ３から読み出されたデータがそのまま出力されて、プロセッサに転送される。エラー訂正を行った後のデータをプロセッサに転送する場合と、エラーが検知されなかったデータをプロセッサに転送する場合とで、レイテンシが異なる。
【００２２】
ヒット判定部９は、データアレイ３から読み出したデータにエラーがない場合、あるいはエラー訂正可能なエラーが含まれる場合は、キャッシュヒットしたことを示す信号を出力し、それ以外はキャッシュミスしたことを示す信号を出力する。すなわち、ヒット判定部９は、ＥＣＣエラー訂正部１１でエラー訂正できないデータは、キャッシュミスと判定する。この場合、キャッシュメモリ１よりも低次のキャッシュメモリ１またはメインメモリ（以下、低次メモリ）に対するアクセス要求が行われる。
【００２３】
キャッシュコントローラ１２は、後述するように、ＥＣＣエラー検知部１０、ＥＣＣエラー訂正部１１およびヒット判定部９の処理結果に基づいて、キャッシュメモリ１および低次メモリに対するアクセスを制御する。
【００２４】
ＥＣＣにより救済されるエラーには、書き込み不良とリテンション不良の他に、製造に起因する初期不良がある。従来、初期不良は、フューズ素子を用いて冗長セルに置換するようにしており、初期不良を含むアドレスブロックへのアクセスは行われていなかった。ところが、初期不良は、０固定や１固定であることが多いため、たまたま書き込まれるビットが固定された値と同じである場合は、正常値を保持していると誤って判断してしまうおそれがあった。
【００２５】
本実施形態は、冗長セルへの置換は行わずに、あるいは、冗長セルへの置換を行うとしても、完全に初期不良をゼロにせずに、あるいは、当初は初期不良がゼロであっても経年劣化により不良ビットが発生する状況においても、キャッシュメモリ１を正常に動作させるものである。
【００２６】
まず、データ書き込み時の動作を説明する。データを書き込んだ後、すぐに書き込み検証（ベリファイ）のためにデータを読み出して、書き込んだ値と読み出した値とを比較する。このとき、エラーがなければ、書き込みは正常に完了したとして、特に追加の処理は行わない。書き込んだ値と読み出した値が異なっていた場合は、ＥＣＣエラー検知部１０でエラーを検知可能かどうかと、ＥＣＣエラー訂正部１１でエラーを訂正可能かどうかとを、不一致ビットの個数から計算する。
【００２７】
エラー訂正可能な数のエラービット数でかつ、不一致ビットの個数が所定の閾値以上であった場合、その後、ＥＣＣによって訂正不能となる可能性が高いため、低次メモリにも同じデータをバックアップのため書き込んでおく。これは、ライトスルー（Write-through）方式でキャッシュを動作させることと同じである。本明細書では、キャッシュメモリにデータを書き込むのに並行して、同じデータを低次メモリにも書き込むモードをライトスルーモードと呼ぶ。
【００２８】
ここで、所定の閾値とは、ＥＣＣエラー訂正部１１でエラーを訂正可能な最大ビット数に基づいて設定される値であり、より具体的には、最大ビット数以下の値である。閾値をエラー訂正可能な最大ビット数以下とすることで、実際のエラービット数が閾値を超えなければ、必ずＥＣＣエラー訂正部１１でエラーを訂正できることになる。すなわち、閾値を低く設定するほど、エラーを訂正可能な余裕度が大きくなるが、ライトスルーで低次メモリにデータを書き込む頻度が高くなる。
【００２９】
エラー訂正可能な数のエラーで、なおかつ不一致ビットの個数が閾値以下であった場合は、エラー訂正不能となる確率は低いため、該当キャッシュにのみデータを格納する。これは、ライトバック（Write-back）方式でキャッシュメモリ１を動作させることと同じである。本明細書では、キャッシュメモリに書き込んだデータを、その後の所定のタイミングで、低次メモリに書き戻すモードをライトバックモードと呼ぶ。
【００３０】
また、エラー訂正がすでに不能となっている場合は、キャッシュメモリ１として機能しないことが予測されるため、データアレイ３内の別のウェイにデータを書き直す。このとき、最初に書いたウェイはdisableとして、対応するタグアレイ２も無効化する。
【００３１】
次に、データ読み出し時の動作を説明する。キャッシュメモリ１にいったん書き込んだデータは、リテンション特性の劣化等により、時間がたつにつれその信頼度が低下してしまうため、データ読み出し時のエラー発生具合により、適宜ダーティーなデータは下位のメモリ階層、すなわち低次メモリへのWrite-backを行う。
【００３２】
例えば、データの読出しアクセスに応答して、読み出したデータについてエラー検知を行い、エラーが発生していなければ、データの信頼度が高いため、その時点では、低次メモリへのデータの書き込みは行わない。また、エラーが検知されて、エラー訂正が可能なエラーの個数で、なおかつ閾値以下のエラー個数であった場合は、データの信頼度にまだ余裕があるため、やはり、この時点での低次メモリへの書き込みは行わない。一方、エラー訂正が可能なエラーの個数で、なおかつ閾値以上のエラー個数であった場合は、信頼度に余裕がないため、Dirtyなデータであれば、すなわち、低次メモリにまだ書き込んでいないデータであれば、低次メモリにデータを書き込む。これにより、DirtyなデータはCleanなデータとなり、キャッシュメモリ１内のデータがエラー訂正不能となっても、下位のメモリ階層（低次メモリ）にアクセスすれば正しいデータを取得できるため、プロセッサシステムが異常終了するおそれはない。
【００３３】
また、すでにエラー訂正不能な数のエラーが発生している場合、そのデータを使用することができないので、下位のメモリ階層（低次メモリ）にアクセスを行う。この時、エラー訂正不能な数のエラーが発生したデータがDirtyなデータであれば、正しいデータを失ったことになり、システムが異常終了する可能性がある。しかし、本実施形態では、閾値以上のエラーが発生した時点でライトスルーモードにて低次メモリにデータを書き込むため、エラー訂正可能なデータが低次メモリ内に存在することになり、プロセッサシステムが異常終了する可能性は非常に低い。また、高い頻度でシステムが異常終了する場合は、上述した閾値を低く設定すればよい。すなわち、システムを導入した直後は初期不良の選別ができておらず、閾値を低めに設定しておき、その後しばらくは、プロセッサシステムの経年劣化が少ないことから閾値を高めに設定し、次第に経年劣化が増大すると、閾値を再度低く設定するなどの制御を行うことで、初期不良や経年劣化による影響を受けずに、キャッシュメモリ１を安定動作させることができる。
【００３４】
スピン注入磁化反転型（ＳＴＴ：Spin transfer torque）ＭＲＡＭは、低電圧動作および高速読み書きが可能であることから、キャッシュメモリ１に用いるのに適している。ＳＴＴ−ＭＲＡＭに記憶したデータを読み出す手法として、ＭＲＡＭセル内の磁気抵抗効果素子（例えばＭＴＪ素子）を流れる電流を、参照セル内の参照抵抗を流れる電流と比較してデータ０と１を判別する１Ｔ−１Ｒタイプの読み出し方式が知られているが、より高速な読み出しを行うには、参照セルを用いない２Ｔ−２Ｒタイプの読み出し方式を採用するのが望ましい。
【００３５】
２Ｔ−２Ｒタイプでは、一対のビット線のそれぞれに接続されたＭＲＡＭセル内の磁気抵抗効果素子の抵抗値を互いに逆にしておき、それぞれの磁気抵抗効果素子を流れる電流同士を比較してデータ０と１を判別する。
【００３６】
２Ｔ−２Ｒタイプでは、参照セル内の参照抵抗を流れる電流との比較を行わずに、一対のビット線を用いて、一対の磁気抵抗効果素子を流れる電流の差を検出するため、１Ｔ−１Ｒタイプよりも、より高速な読み出しを実現できる。
【００３７】
また、１Ｔ−１Ｒタイプと２Ｔ−２Ｒタイプのいずれにおいても、ビット線を流れる電流を読み出する電流読み出し方式と、ビット線の電圧を読み出す電圧読み出し方式とがある。以下では、ビット線の経路にキャパシタを設けて電圧読み出しを行う例について説明する。
【００３８】
図２（ａ）の回路は、磁気抵抗効果素子ＡＰを有するＭＲＡＭセル３１と、参照抵抗Ｒｅｆを有する参照セル３２と、ＭＲＡＭセル３１からの電流が流れるビット線上に設けられるトランスファゲート３３と、このトランスファゲート３３の一端側に接続されるローカル容量ＣBLと、トランスファゲート３３の他端側に接続されるグローバル容量ＣGLと、参照セル３２からの電流が流れる参照ビット線上に設けられるトランスファゲート３４と、このトランスファゲート３４の一端側に接続されるローカル容量ＣREFと、トランスファゲート３４の他端側に接続されるグローバル容量Ｃ/GLと、ビット線および参照ビット線に接続されるセンスアンプ４とを有する。
【００３９】
図２（ｂ）の回路は、互いに異なる抵抗値の磁気抵抗効果素子ＡＰ，Ｐを有する一対のＭＲＡＭセル３１，３５と、各ＭＲＡＭセル３１，３５からの電流が流れる一対のビット線上に設けられる一対のトランスファゲート３３，３４と、これら一対のトランスファゲート３３，３４の一端側に接続されるローカル容量ＣBL、Ｃ/BLと、これら一対のトランスファゲート３３，３４の他端側に接続されるグローバル容量ＣGL、Ｃ/GLと、一対のビット線に接続されるセンスアンプ４とを有する。
【００４０】
図２（ａ）の１Ｔ−１Ｒタイプでは、一つのＭＲＡＭセル３１内の磁気抵抗効果素子ＡＰを流れる電流に応じた電荷を蓄積するローカル容量ＣBLとグローバル容量ＣGLを合成したキャパシタの一端側電圧を、参照セル３２内の参照抵抗Ｒｅｆを流れる電流に応じた電荷を蓄積するローカル容量Ｃrefとグローバル容量Ｃ/GLを合成したキャパシタの一端側電圧と比較して、データ０と１を決定する。参照抵抗Ｒｅｆは、磁気抵抗効果素子ＡＰが取り得る高抵抗と低抵抗との中間の抵抗値を有するため、磁気抵抗効果素子ＡＰの抵抗値が参照抵抗の抵抗値より大きいか小さいかで、データ０または１が決まる。
【００４１】
図２（ｂ）の２Ｔ−２Ｒタイプでは、一対のビット線のそれぞれに接続されたＭＲＡＭセル３１，３５内の磁気抵抗効果素子ＡＰ，Ｐの抵抗値を互いに逆にしておき、それぞれの磁気抵抗効果素子ＡＰ，Ｐを流れる電流に応じた電荷を蓄積する各キャパシタの一端側電圧を互いに比較して、データ０と１を決定する。このように、２Ｔ−２Ｒタイプでは、一対のビット線を用いて差動でデータを読み出すため、１Ｔ−１Ｒタイプよりも高速にデータを読み出すことができる。
【００４２】
ＳＴＴ−ＭＲＡＭにおいて、信頼性を低下させる要因となるのは、磁気抵抗効果素子の書き込み電流値やデータ保持時間のばらつきなどである。これらのばらつきにより、エラーが発生する。エラーの具体的な形態は、主に書込みエラー、読出しエラー、リテンションエラーの３つである。
【００４３】
ここで、２Ｔ−２Ｒタイプのセルで最も頻発するエラーは、一対のビット線に対応して設けられる一対の磁気抵抗効果抵抗素子が両方とも低抵抗、もしくは両方とも高抵抗になることによるエラーである。上述したように、２Ｔ−２Ｒタイプの読み出し方式では、一対のビット線に対応する一対の磁気抵抗効果素子を流れる電流を比較するため、一対の磁気抵抗効果素子がともに低抵抗または高抵抗になると、これら磁気抵抗効果素子を流れる電流に差異が生じなくなり、わずかな電流差をセンスして、誤ったデータを出力してしまうおそれがある。
【００４４】
上述した１Ｔ−１Ｒタイプの読み出し方式では、各ビット線に対応する磁気抵抗効果素子を流れる電流を、参照セル内の参照抵抗を流れる電流と比較するため、一対のビット線に対応する一対の磁気抵抗効果素子がともに低抵抗や高抵抗になったとしても、中間の抵抗値を持つ参照セルとの比較により、エラーを正しく検知できる。
【００４５】
そこで、本実施形態のデータ読み出し部４は、２Ｔ−２Ｒタイプの読み出し方式を基本としながらも、エラー検知時には１Ｔ−１Ｒタイプによる参照セルとの比較も行えるようにした新たな読み出し方式を採用する。
【００４６】
図３はデータ読み出し部４の内部構成の一例を示すブロック図である。図３のデータ読み出し部４は、カラムセレクタ２１と、読み出し方式選択部２２と、センスアンプ２３とを有する。
【００４７】
カラムセレクタ２１は、不図示のカラムデコーダから出力されるカラム選択信号ＣＳＬに基づいて、読み出しを行うべきＭＲＡＭセルが接続されたビット線を選択する。読み出し方式選択部２２は、キャッシュコントローラ１２から出力されるモード選択信号Ｍｏｄｅに基づいて、２Ｔ−２Ｒタイプの読み出しを行うか、あるいは１Ｔ−１Ｒタイプの読み出しを行うかを選択する。
【００４８】
キャッシュコントローラ１２は、通常は、２Ｔ−２Ｒタイプの読み出しを行うべくモード選択信号Ｍｏｄｅの信号論理を設定し、エラーが検知された場合は、１Ｔ−１Ｒタイプの読み出しを行うべく、モード選択信号Ｍｏｄｅの信号論理を切り替える。
【００４９】
図４はキャッシュコントローラ１２の処理動作の一例を示すフローチャートである。このフローチャートは、プロセッサがあるアドレスに対してアクセス要求を行った場合に開始される。
【００５０】
まず、アクセス要求のあったアドレスがキャッシュメモリ１にヒットしたか否か、すなわちアクセス要求のあったアドレスのデータがキャッシュメモリ１に格納されているか否かを判定する（ステップＳ１）。ヒットしなかった場合は、アクセス要求は、書き込み要求か否かを判定する（ステップＳ２、第１読み書き判定部）。書き込み要求でなく、読み出し要求の場合は、アクセス要求のあったアドレスに対応するデータを低次メモリから読み出してキャッシュメモリ１に格納（ロード）するとともに、そのデータをプロセッサに転送する（ステップＳ３）。書き込み要求の場合は、書き込み要求のあったアドレスに対応するデータをキャッシュメモリ１に書き込む（ステップＳ４）。このステップＳ４では、キャッシュメモリ１に書き込んだデータのベリファイを行って、その結果に基づいて、ライトスルーモードかライトバックモードのいずれかを選択する。
【００５１】
図５はステップＳ４の詳細な処理手順の一例を示すフローチャートである。まず、キャッシュメモリ１に書き込んだデータを読み出して、書き込んだデータと読み出したデータとが一致するか否かのベリファイを行う（ステップＳ２１）。
【００５２】
ステップＳ２１で一致すれば、エラーがないと判断して、ライトバックモードを選択して、後に低次メモリに書き込むことにする（ステップＳ２２）。ライトバックモードを選択するのは、キャッシュメモリ１に書き込んだデータにはエラーがなく、信頼度に余裕があることから、通常のキャッシュメモリ１と同様に、プロセッサからのアクセスがないときに低次メモリに書き込めばよいためである。
【００５３】
ステップＳ２１で一致しないと判定された場合は、ＥＣＣエラー検知部１０にて、エラービット数を検知し、検知されたエラービット数がＥＣＣエラー訂正部１１で訂正できる最大エラービット数以下の所定の閾値以下か否かを判定する（ステップＳ２３）。エラービット数が閾値以下であれば、信頼度に余裕があると判断して、やはりライトバックモードを選択して、後に低次メモリに書き込むことにする（ステップＳ２４）。
【００５４】
ステップＳ２３で、エラービット数が閾値より多いと判定されると、信頼度に余裕がないと判断して、ライトスルーモードを選択して、このデータを低次メモリにも書き込む（ステップＳ２５）。ここで、ライトスルーモードを選択するのは、現時点でエラービット数が多いということは、経年劣化等でさらにエラーが増えて完全にエラー訂正できなくなるおそれがあることから、迅速に低次メモリにデータを書き込んで、将来的にキャッシュメモリ１内のデータが読み出し不能になっても、低次メモリから正しいデータを読み出せるようにするためである。
【００５５】
図４のステップＳ１で、キャッシュメモリ１にヒットしたと判定された場合、プロセッサによるアクセス要求が書き込み要求か否かを判定する（ステップＳ５、第２読み書き判定部）。書き込み要求の場合は、上述したステップＳ４と同様に、アクセス要求のあったアドレスに対応するデータをキャッシュメモリ１に書き込む（ステップＳ６）。このステップＳ５でも、図５と同様の処理を行って、ライトスルーモードかライトバックモードのいずれかを選択する。
【００５６】
ステップＳ５で読み出し要求と判定されると、アクセス要求のあったアドレスに対応するデータをキャッシュメモリ１から読み出し、読み出したデータにエラーがあるか否かをＥＣＣエラー検知部１０にて判定する（ステップＳ７）。エラーがあると判定されると、エラービット数が上述した閾値以下か否かを判定する（ステップＳ８）。閾値以下と判定されると、エラーを訂正後のデータをプロセッサに転送するとともに、キャッシュメモリ１内のデータも更新する（ステップＳ９）。このステップＳ９では、経年劣化により、近い将来にエラー訂正不可能になるおそれもあるため、このアドレスのデータをまだ低次メモリに書き戻していなければ、すなわち、ダーティなデータであれば、低次メモリに書き戻す処理を行う。
【００５７】
ステップＳ８でエラービット数が閾値より大きいと判定されると、そのエラーがＥＣＣエラー訂正部１１にて訂正可能であるか否かを判定する（ステップＳ１０）。閾値は、ＥＣＣエラー訂正部１１で訂正可能な最大エラービット数以下の値であり、実際のエラービット数が閾値より多くても、ＥＣＣエラー訂正部１１でエラー訂正できる場合もある。そこで、ステップＳ１０では、エラー訂正できるか否かを判定し、エラー訂正可能と判定されると、上述したステップＳ９に進んで、ＥＣＣエラー訂正部１１にてエラー訂正を実行し、訂正後のデータをプロセッサに転送するとともに、キャッシュメモリ１内のデータも更新する。
【００５８】
ステップＳ８で訂正可能でないと判定されると、データ読み出し部４に入力されるモード選択信号Ｍｏｄｅを切り替えて、１Ｔ−１Ｒ読み出し方式によるエラー検証を行うよう指示する（ステップＳ１１）。次に、データ読み出し部４が１Ｔ−１Ｒ読み出し方式を実行して出力されたデータに対して、ＥＣＣエラー検知部１０でエラー検知を行う。検知されたエラービット数が、ＥＣＣエラー訂正部１１で訂正可能な最大エラービット数に基づいて設定される所定の閾値より多いか否かを判定する（ステップＳ１２）。エラービット数が閾値より多いと判定されると、エラー訂正が不可能と判断して、読み出し要求のあったアドレスに対応するデータを低次メモリから読み出して、キャッシュメモリ１に格納するとともに、プロセッサに転送する（ステップＳ１３）。エラービット数が閾値以下と判定されると、キャッシュメモリ１から読み出したデータをＥＣＣエラー訂正部１１にてエラー訂正してキャッシュメモリ１内のデータを更新するとともに、プロセッサに転送する（ステップＳ１４）。
【００５９】
ステップＳ７でエラーがないと判定されると、エラー訂正の処理を行わずに、キャッシュメモリ１から読み出したデータをプロセッサに転送する（ステップＳ１５）。
【００６０】
図４のフローチャートにおいて、ステップＳ７、Ｓ８およびＳ１１はエラー判定部に該当し、ステップＳ４、Ｓ６、Ｓ９、Ｓ１３およびＳ１４はアクセス制御部に該当する。
【００６１】
このように、本実施形態では、プロセッサからあるアドレスに対する書き込み要求があった場合は、キャッシュメモリ１に書き込んだデータを読み出してベリファイを行い、エラービット数が閾値以下であれば、信頼度に余裕があると判断してライトバックモードを選択し、エラービット数が閾値より多いと、エラー訂正ができない可能性が高いと判断してライトスルーモードを選択して、キャッシュメモリ１に書き込んだデータを、低次メモリにも書き込む。また、プロセッサからあるアドレスに対する読み出し要求があった場合は、キャッシュメモリ１から読み出したデータに対してエラー検知を行い、エラービット数が閾値以下であればエラー訂正後のデータをキャッシュメモリ１に書き込み、エラービット数が閾値より多ければエラー訂正不可能と判断して、低次メモリから対応するデータを読み出してキャッシュメモリ１内のデータを更新する。
【００６２】
キャッシュメモリ１に格納したデータは、経年劣化により、格納してからの期間が長くなるほど、エラーが発生しやすくなる。そこで、ＤＲＡＭのリフレッシュと同様に、キャッシュメモリ１内のデータを定期的に読み出して再書き込みをする処理を行うのが望ましい。定期的に読み出すデータは、全データが望ましいが一部のデータでも良い。この処理の中で、図４の処理と同様に、エラー検知を行って、検知されたエラービット数を閾値と比較して、その比較結果に基づいて、必要に応じてライトスルーモードに切り替えるようにすれば、キャッシュメモリ１内のデータが経年劣化によるエラー増大により完全に読み出せなくなる前に、低次メモリへの書き込みを行うことができ、キャッシュメモリ１に対するアクセスの信頼度を向上できる。
【００６３】
以上により、本実施形態によれば、キャッシュメモリ１に書き込んだデータ、あるいはキャッシュメモリ１から読み出したデータにエラーが含まれる場合も、そのエラーが余裕をもって訂正できる場合は、キャッシュメモリ１からのデータを有効なものと扱うため、低次メモリへのアクセス頻度を下げることができて、高速アクセスが可能となる。
【００６４】
また、キャッシュメモリ１に書き込んだデータに含まれるエラービット数が、ＥＣＣエラー訂正部１１で訂正可能な最大ビット数よりも小さい閾値以上であれば、キャッシュメモリ１内のデータを低次メモリにも書き込むため、キャッシュメモリ１内のデータのエラーにより誤動作を引き起こす等の不具合を未然に防止でき、信頼性が向上する。
【００６５】
さらに、本実施形態では、キャッシュメモリ１のメモリセルとしてＭＲＡＭセルを用いる場合に、一対のビット線に接続される一対の磁気抵抗効果素子の抵抗値がともに低抵抗または高抵抗になるエラーが発生したとしても、各磁気抵抗効果素子の抵抗値を、参照セル内の参照抵抗と比較することで、どの磁気抵抗効果素子でエラーが発生したかを正しく検知できる。
【００６６】
本発明の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本発明の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【００６７】
１  キャッシュメモリ、２  タグアレイ、３  データアレイ、４  データ読み出し部、５  第１比較回路、６  第２比較回路、７  選択回路、８  タグ一致信号生成部、９  ヒット判定部、１０  ＥＣＣエラー検知部、１１  ＥＣＣエラー訂正部、１２  キャッシュコントローラ、３１、３５  ＭＲＡＭセル、３２  参照セル、３３、３４  トランスファゲート
【図１】
2015052938.tif 000003
【図２】
2015052938.tif 000004
【図３】
2015052938.tif 000005
【図４】
2015052938.tif 000006
【図５】
2015052938.tif 000007