(57)【要約】 【課題】不揮発メモリのデータ保持特性を向上させる。【解決手段】メモリシステムは、揮発メモリのメモリ容量以下のメモリ容量を有し、揮発メモリに格納されたデータの少なくとも一部が格納される不揮発メモリと、揮発メモリ内のデータをリフレッシュする第１制御部と、第１制御部が揮発メモリ内のデータをリフレッシュする第１期間と次にリフレッシュする第２期間との間の第３期間内に、揮発メモリから読み出したデータを不揮発メモリに上書きする第２制御部と、を備える。【選択図】図１
2018049671.tif 000002
【特許請求の範囲】
【請求項１】
揮発メモリのメモリ容量以下のメモリ容量を有し、前記揮発メモリに格納されたデータの少なくとも一部が格納される不揮発メモリと、
前記揮発メモリ内のデータをリフレッシュする第１制御部と、
前記第１制御部が前記揮発メモリ内のデータをリフレッシュする第１期間と次にリフレッシュする第２期間との間の第３期間内に、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きする第２制御部と、を備える、メモリシステム。
【請求項２】
前記第２制御部は、前記第３期間内に、前記不揮発メモリ内の少なくとも一部のメモリ領域に対して、前記揮発メモリから読み出したデータに対応するデータを上書きする、請求項１に記載のメモリシステム。
【請求項３】
前記不揮発メモリ内のデータのアドレスと前記揮発メモリ内のデータのアドレスとの関連付け情報を記憶する関連付け情報記憶部を備え、
前記第２制御部は、前記関連付け情報に基づいて、前記揮発メモリから読み出したデータに対応する前記不揮発メモリ内のデータを上書きする、請求項１または２に記載のメモリシステム。
【請求項４】
前記第２制御部は、前記第１制御部による前記揮発メモリ内のデータのリフレッシュが終了した後、前記第３期間内に前記揮発メモリからデータを読み出して、読み出したデータを前記不揮発メモリに上書きする、請求項１乃至３のいずれか一項に記載のメモリシステム。
【請求項５】
前記第２制御部は、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きするか否かをビットもしくはライン単位で制御する、請求項１乃至４のいずれか一項に記載のメモリシステム。
【請求項６】
前記第２制御部は、プロセッサがスリープモードの期間内に、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きする、請求項１乃至５のいずれか一項に記載のメモリシステム。
【請求項７】
前記揮発メモリから読み出したデータが前記不揮発メモリ内の対応するデータと異なっているか否かを検出する誤り検出部を備え、
前記第２制御部は、前記誤り検出部にて異なっていることが検出された場合に、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きする、請求項１乃至６のいずれか一項に記載のメモリシステム。
【請求項８】
前記第２制御部は、前記誤り検出部の検出結果に基づいて、前記揮発メモリから読み出したデータのビット列のうち、前記不揮発メモリ内の対応するデータと異なるビットを上書きする、請求項７に記載のメモリシステム。
【請求項９】
前記不揮発メモリ内に格納されたデータの誤り頻度を検出する誤り頻度検出部を備え、
前記第２制御部は、前記誤り頻度に基づいて、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きするリフレッシュ周期を制御する、請求項１乃至８のいずれか一項に記載のメモリシステム。
【請求項１０】
前記不揮発メモリ内のデータに含まれる所定ビット数以内の誤りビットを訂正する誤り訂正部と、
前記揮発メモリから読み出したデータが前記誤り訂正部にて訂正可能か否かを判定する訂正可否判定部と、
前記揮発メモリから読み出したデータに誤りがあり、かつ前記訂正可否判定部にて誤り訂正可能と判定された場合に、カウントアップするカウンタと、
前記カウンタのカウント値が所定の閾値を超えたか否かを判定するカウント値判定部と、
前記訂正可否判定部にて訂正可能でないと判定された場合、または前記カウント値判定部にて前記閾値を超えたと判定された場合にトリガ信号を生成するトリガ信号生成部と、を備え、
前記第２制御部は、前記トリガ信号が生成された以降であって、かつ前記第３期間内に、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きする、請求項９に記載のメモリシステム。
【請求項１１】
前記不揮発メモリは、前記揮発メモリよりもプロセッサによるアクセス優先度が高いキャッシュメモリであり、
前記プロセッサによる書込み要求に応じて前記不揮発メモリにデータを書き込む際には、このデータをライトスルーモードで前記揮発メモリに書き込むキャッシュコントローラを備える、請求項１乃至１０のいずれか一項に記載のメモリシステム。
【請求項１２】
前記不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）を備える、請求項１乃至１１のいずれか一項に記載のメモリシステム。
【請求項１３】
プロセッサと、
前記プロセッサによりアクセスされるメモリシステムと、を備え、
前記メモリシステムは、
揮発メモリのメモリ容量以下のメモリ容量を有し、前記揮発メモリに格納されたデータの少なくとも一部が格納される不揮発メモリと、
前記揮発メモリ内のデータをリフレッシュする第１制御部と、
前記第１制御部が前記揮発メモリ内のデータをリフレッシュする第１期間と次にリフレッシュする前記第２期間との間の第３期間内に、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きする第２制御部と、を有する、プロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびプロセッサシステムに関する。
【背景技術】
【０００２】
ＭＲＡＭ（Magnetoresistive Random Access Memory）は不揮発性メモリの中でも書き換え速度が高速で、メインメモリやキャッシュメモリなどのワーキングメモリへの応用が検討されている。ＭＲＡＭをキャッシュメモリに適用するため、ＭＲＡＭの記憶素子であるＭＴＪ素子を高速アクセス可能なＭＴＪ素子にするとデータ保持特性が低下し、高温状態などでは、データリテンション時間が短くなるおそれがある。ＭＲＡＭにデータを書き込むなどアクセス後にベリファイ書き込みを行うことによりデータの保持特性を維持することも可能であるが、アクセス間隔がデータリテンション時間より長くなると、データが消失するおそれがある。
【０００３】
ＭＲＡＭを含む不揮発性メモリはデータのリテンション時間を長くするため、高電圧かつ長パルスの高ストレス条件で書き込みを行うことが多い。このため、消費電力が増大して、メモリ素子へのストレスも大きくなるため、書き換え耐性が劣化するという課題がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許５５４９９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、不揮発メモリのデータ保持特性を向上させるメモリシステムおよびプロセッサシステムを提供するものである。
【課題を解決するための手段】
【０００６】
本実施形態によれば、揮発メモリのメモリ容量以下のメモリ容量を有し、前記揮発メモリに格納されたデータの少なくとも一部が格納される不揮発メモリと、
前記揮発メモリ内のデータをリフレッシュする第１制御部と、
前記第１制御部が前記揮発メモリ内のデータをリフレッシュする第１期間と次にリフレッシュする第２期間との間の第３期間内に、前記揮発メモリから読み出したデータを前記不揮発メモリに上書きする第２制御部と、を備える、メモリシステムが提供される。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態によるメモリシステムを備えたプロセッサシステムの概略構成を示すブロック図。
【図２】図１をより具体化したプロセッサシステムの概略構成を示すブロック図。
【図３】ＤＲＡＭとＭＲＡＭのリフレッシュタイミングを示す図。
【図４】第１の実施形態によるＭＲＡＭのリフレッシュ処理手順を示すフローチャート。
【図５】第２の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図６】第２の実施形態によるＭＲＡＭのリフレッシュ処理手順を示すフローチャート。
【図７】第３の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図８】第４の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図９】第４の実施形態によるＭＲＡＭのリフレッシュ処理手順を示すフローチャート。
【図１０】第４の実施形態によるＭＲＡＭのトリガ信号出力手順を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態を説明する。
【０００９】
（第１の実施形態）
図１は第１の実施形態によるメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、プロセッサ（ＣＰＵ：Central Processing Unit）３と、メモリシステム１とを備えている。プロセッサ３とメモリシステム１とは、バス４を介してデータ、アドレスおよび各種制御信号の送受を行う。バス４は、データを送受するデータバス、アドレスを送受するアドレスバス、各種制御信号を送受する制御信号バスなどの複数種類のバス４を含んでいる。
【００１０】
メモリシステム１は、揮発メモリ５と、不揮発メモリ６と、第１リフレッシュ制御部（第１制御部）７と、第２リフレッシュ制御部（第２制御部）８とを有する。
【００１１】
揮発メモリ５は、メモリシステム１に内蔵してもよいし、メモリシステム１に着脱可能に接続してもよい。揮発メモリ５は、例えばＤＲＡＭ（Dynamic Random Access Memory）で構成されている。揮発メモリ５は、格納されたデータを保持するために、定期的にリフレッシュを行う必要がある。リフレッシュでは、格納されたデータを読み出して、再書き込みを行う。リフレッシュは、例えば、数十〜数百ｍｓごとに行われる。
【００１２】
不揮発メモリ６のメモリ容量は、揮発メモリ５のメモリ容量以下である。不揮発メモリ６には、揮発メモリ５に格納されたデータの少なくとも一部が格納される。典型的には、揮発メモリ５に格納されたデータのうち、プロセッサ３によるアクセス頻度が高いデータを不揮発メモリ６に格納する。不揮発メモリ６は、例えば、ＭＲＡＭなどの高速アクセスが可能なメモリを用いるのが望ましい。
【００１３】
不揮発メモリ６のアクセス性能が揮発メモリ５よりも高い場合には、不揮発メモリ６を揮発メモリ５よりもアクセス優先度の高いメモリとして利用することができる。例えば、不揮発メモリ６をキャッシュメモリとして使用し、揮発メモリ５を不揮発メモリ６よりもアクセス優先度の低いキャッシュメモリか、メインメモリとして使用することが考えられる。この場合、プロセッサ３は、揮発メモリ５にアクセスするよりも先に不揮発メモリ６にアクセスすることになる。例えば、プロセッサ３がデータの書込みを行う場合、プロセッサ３は、揮発メモリ５よりも先に不揮発メモリ６にデータを書き込む。不揮発メモリ６に書き込んだデータは、その後に揮発メモリ５にも書き込まれることになるが、プロセッサ３が不揮発メモリ６にデータを書き込む際には、ライトスルーにより揮発メモリ５にもデータを書き込むことを基本動作としてもよい。
【００１４】
第１リフレッシュ制御部７は、揮発メモリ５内のデータをリフレッシュする。リフレッシュは、揮発メモリ５内の少なくとも一部のメモリ領域に対して所定時間ごとに行われる。より詳細には、第１リフレッシュ制御部７は、プロセッサ３が揮発メモリ５へのアクセスを行わない期間内に、所定時間ごとに行われる。
【００１５】
第２リフレッシュ制御部８は、第１リフレッシュ制御部７が揮発メモリ５内のデータをリフレッシュするリフレッシュ期間と次のリフレッシュ期間との合間に、揮発メモリ５から読み出したデータを不揮発メモリ６に上書きする。
【００１６】
図２は図１をより具体化したプロセッサシステム２の概略構成を示すブロック図である。図２では、揮発メモリ５としてＤＲＡＭ５を用い、不揮発メモリ６としてＭＲＡＭ６を用いる例を示している。図２のプロセッサシステム２は、プロセッサ３（ＣＰＵ）およびバス４の他に、ＤＲＡＭ５と、ＤＲＡＭコントローラ１１と、ＤＲＡＭ−ＰＨＹ１２と、ＭＲＡＭ６と、ＭＲＡＭコントローラ１３と、ＭＲＡＭ−ＰＨＹ１４と、ＭＲＡＭリフレッシュコントローラ１５とを備えている。
【００１７】
ＤＲＡＭコントローラ１１は、プロセッサ３からのアクセス要求を受けて、ＤＲＡＭ５に対するアクセスを制御する。ＤＲＡＭ−ＰＨＹ１２は、実装されるＤＲＡＭ５の規格に従って、ＤＲＡＭ５とＤＲＡＭコントローラ１１を接続するためのインターフェースである。ＤＲＡＭコントローラ１１は、図１に示す第１リフレッシュ制御部７の機能を有する。ＤＲＡＭコントローラ１１は、ＭＲＡＭリフレッシュコントローラ１５からのコマンド要求を受け付け、データを送受信する機能を有する。
【００１８】
ＭＲＡＭコントローラ１３は、プロセッサ３からのアクセス要求を受けて、ＭＲＡＭ６に対するアクセスを制御する。ＭＲＡＭ−ＰＨＹ１４は、実装されるＭＲＡＭ６の規格に従って、ＭＲＡＭ６とＭＲＡＭコントローラ１３を接続するためのインターフェースである。ＭＲＡＭコントローラ１３は、ＭＲＡＭリフレッシュコントローラ１５からのコマンド要求を受け付け、データを送受信する機能を有する。
【００１９】
ＭＲＡＭリフレッシュコントローラ１５は、図１に示す第２リフレッシュ制御部８の機能を有し、ＭＲＡＭ６に対するリフレッシュを制御する。ＭＲＡＭリフレッシュコントローラ１５は、タイミング制御部２１と、アドレス対応テーブル２２とを有する。タイミング制御部２１は、ＭＲＡＭ６のリフレッシュを行うタイミングを制御する。アドレス対応テーブル２２は、ＭＲＡＭ６内のデータとＤＲＡＭ５内のデータとの関連付け情報を記憶する関連付け記憶部である。アドレス対応テーブル２２は、例えばレジスタやＳＲＡＭなどを用いて構成される。また、ＭＲＡＭリフレッシュコントローラ１５は、ＤＲＡＭコントローラ１１およびＭＲＡＭコントローラ１３とのコマンドおよびデータを送受信する機能を有する。コマンドおよびデータを送受信する機能とは例えばコマンドおよびデータの入出力系統、入出力バッファ領域を備えていることを意味する。
【００２０】
図３はＤＲＡＭ５とＭＲＡＭ６のリフレッシュタイミングを示す図である。ＤＲＡＭ５のリフレッシュは、プロセッサ３がＤＲＡＭ５に対するアクセスを行わない期間内に、所定時間ごとにＤＲＡＭ５内の全てもしくは一部のメモリ領域に対して行われる。プロセッサ３がアクセスを行わない期間とは、プロセッサ３が通常動作をしているにもかかわらずメモリアクセスを行わない期間と、プロセッサ３がスリープモードの期間とを含んでいる。
【００２１】
図３は、６４ｍｓごとにＤＲＡＭ５のリフレッシュを行う例を示している。図３の例では、ＤＲＡＭ５のメモリ容量を１ギガバイトとしている。１２８ｋバイト単位で８１９２回に分けてリフレッシュを行うとして、１回当たりのＤＲＡＭ５アクセスに１１０ｎｓを要するとすると、ＤＲＡＭ５内の全メモリ領域をリフレッシュするのに要する時間は、１１０ｎｓ×８１９２＝約０．９ｍｓである。よって、リフレッシュ間隔が６４ｍｓとすると、６４−０．９＝６３．１ｍｓは空き時間である。
【００２２】
そこで、ＭＲＡＭリフレッシュコントローラ１５内のタイミング制御部２１は、この空き時間を利用して、ＭＲＡＭ６のリフレッシュを行う。例えば、ＤＲＡＭ５からのデータ転送レートが１２．８ＧＢｂｐｓとすると、ＤＲＡＭ５からＭＲＡＭ６に１メガバイトを転送するのに、０．０１ｍｓを要する。ＭＲＡＭ６に１Ｍバイトのデータを書くのに、５ｎｓ×１Ｍ／２５６＝０．０１９５ｍｓを要する。これらの期間を合わせても、０．０３ｍｓ以下である。このように、ＭＲＡＭ６とＤＲＡＭ５のメモリ容量が同じであったとしても、ＭＲＡＭ６のリフレッシュ時間はＤＲＡＭ５の１／１０以下であり、ＤＲＡＭ５のリフレッシュ間隔の合間に、余裕を持ってＭＲＡＭ６のリフレッシュを行うことができるのがわかる。
【００２３】
図４は第１の実施形態によるＭＲＡＭ６のリフレッシュ処理手順を示すフローチャートである。まず、ＭＲＡＭリフレッシュコントローラ１５は、ＤＲＡＭ５のリフレッシュが開始されたか否かを判定する（ステップＳ１）。ここでは、ＤＲＡＭコントローラ１１がＤＲＡＭ５に対して発行するコマンドをモニタし、リフレッシュコマンドが発行されれば、ＤＲＡＭ５のリフレッシュが開始されたことを検知する。より詳細には、ＭＲＡＭリフレッシュコントローラ１５内のタイミング制御部２１は、ＤＲＡＭコントローラ１１の制御信号を受信している。タイミング制御部２１がリフレッシュコマンドを受信すると、ステップＳ２以降の処理を開始する。
【００２４】
ステップＳ２では、ＭＲＡＭリフレッシュコントローラ１５は、アドレス対応テーブル２２を参照し、ＭＲＡＭ６内のデータに対応するＤＲＡＭ５内のデータを読み出すリクエストをＤＲＡＭコントローラ１１に送信する。
【００２５】
その後、ＤＲＡＭ５のリフレッシュが終了するまで待機し（ステップＳ３）、ＤＲＡＭ５のリフレッシュが終了すると、ＤＲＡＭコントローラ１１は、ステップＳ２のリクエストに従って、ＤＲＡＭ５から対応データを読み出して、ＭＲＡＭリフレッシュコントローラ１５に送信する（ステップＳ４）。
【００２６】
ＭＲＡＭリフレッシュコントローラ１５は、ＤＲＡＭ５から読み出したデータでＭＲＡＭ６の対応データを上書きする（ステップＳ５）。これにより、ＭＲＡＭ６のリフレッシュが行われる。ＤＲＡＭ５のリフレッシュでは、ＤＲＡＭ５から読み出したデータを再書き込みする処理を行うが、本実施形態のＭＲＡＭ６のリフレッシュでは、ＤＲＡＭ５から読み出したデータをＭＲＡＭ６の対応データに上書きする。これは、ＭＲＡＭ６内のデータよりも、ＤＲＡＭ５内のデータの方が信頼性が高いと考えられるためである。ＤＲＡＭ５内のデータを用いてＭＲＡＭ６のリフレッシュを行うことで、ＤＲＡＭ５と同等の保持特性をＭＲＡＭ６に持たせることができる。
【００２７】
上述したステップＳ４では、上書きするデータを、ＤＲＡＭ５のリフレッシュ終了後に、ＤＲＡＭ５から読み出している。これは、ＤＲＡＭ５でリフレッシュを行う際にＤＲＡＭ５から読み出したデータは、ＤＲＡＭ５の外部には出力されないことが多いためである。もし、リフレッシュのためにＤＲＡＭ５から読み出したデータを外部に出力できる場合には、このデータを用いてＭＲＡＭ６の上書きを行ってもよい。
【００２８】
このように、第１の実施形態では、ＤＲＡＭ５のリフレッシュ期間と次のリフレッシュ期間との合間に、ＤＲＡＭ５から読み出したデータを不揮発メモリ６に上書きするため、ＤＲＡＭ５のリフレッシュと同等の頻度で、ＤＲＡＭ５内のデータを用いてＭＲＡＭ６のリフレッシュを行うことができ、ＭＲＡＭ６の保持特性をＤＲＡＭ５並に保つことができる。
【００２９】
（第２の実施形態）
第２の実施形態は、ＭＲＡＭ６内のデータに誤りがある場合に、ＭＲＡＭ６のリフレッシュを行うものである。
【００３０】
図５は第２の実施形態によるプロセッサシステム２の概略構成を示すブロック図である。図５のプロセッサシステム２は、図２と比べて、ＭＲＡＭリフレッシュコントローラ１５の内部構成が異なっており、その他の構成は共通する。
【００３１】
図５のＭＲＡＭリフレッシュコントローラ１５は、図２と同様のタイミング制御部２１とアドレス対応テーブル２２を有する他に、誤り検出部２３を有する。誤り検出部２３は、ＤＲＡＭ５から読み出したデータがＭＲＡＭ６内の対応するデータと異なっているか否かを検出する。誤り検出部２３はＭＲＡＭ６の内部の読み出し回路部分に実装してもよい。ＭＲＡＭリフレッシュコントローラ１５は、誤り検出部２３にて誤っていることが検出されたＭＲＡＭ６内のデータについてのみ、ＤＲＡＭ５から読み出したデータを上書きする。これにより、ＭＲＡＭ６内の全データを上書きする場合に比べて、ＭＲＡＭ６に対するデータの書き込み回数を削減できる。
【００３２】
図６は第２の実施形態によるＭＲＡＭ６のリフレッシュ処理手順を示すフローチャートである。図６のステップＳ１１〜Ｓ１４は、図４のステップＳ１〜Ｓ４と同じである。誤り検出部２３は、ＤＲＡＭ５から読み出したデータを、ＭＲＡＭ６内の対応するデータを読み出し、ＤＲＡＭデータと比較して、ＭＲＡＭ６内の対応するデータに誤りがあるか否かを検出する（ステップＳ１５）。ここでは、ＭＲＡＭ６内のデータの読出単位であるラインごとに、データに誤りがあるか否かを検出する。ラインとは、複数ビットからなるデータである。誤りがあることが検出されると、ＤＲＡＭ５から読み出したデータでＭＲＡＭ６内の対応するデータを上書きする（ステップＳ１６）。ステップＳ１５、Ｓ１６の処理はＭＲＡＭ６の内部の読み出しおよび書き込み回路部分に実装してもよいし、あるいはＭＲＡＭコントローラ１３に実装してもよい。
【００３３】
ステップＳ１５で誤りが検出されなかった場合、あるいはステップＳ１６の処理が終了した場合は、ＭＲＡＭ６のリフレッシュが終了したか否かを判定し（ステップＳ１６）、まだリフレッシュしていないデータがＭＲＡＭ６内に残っていれば、ステップＳ１４以降の処理を繰り返す。ステップＳ１６で残っていないと判定されると、処理を終了する。
【００３４】
このように、ＤＲＡＭ５とＭＲＡＭ６のリフレッシュは、複数ビットからなるビット列データ（ラインデータ）を単位として行われる。誤り検出部２３は、ＤＲＡＭ５から読み出したデータをＭＲＡＭ６内の対応するデータと比較する際、ビットまたはラインごとに誤りがあるか否かを検出する。例えば、ＭＲＡＭ６から読み出したデータ中の一部のビットだけに誤りがある場合に、ＤＲＡＭ５から読み出したラインデータを単位として、ＭＲＡＭ６に上書きしてもよいし、ＤＲＡＭ５から読み出したラインデータのうち、誤り検出部２３で誤りが検出されたビットだけを、ＭＲＡＭ６に上書きしてもよい。
【００３５】
このように、第２の実施形態では、ＤＲＡＭ５から読み出したデータがＭＲＡＭ６内の対応するデータと異なっている場合に限り、ＤＲＡＭ５から読み出したデータでＭＲＡＭ６内の対応するデータを上書きするため、リフレッシュするべきデータ量を減らすことができ、消費電力を削減できるとともに、ＭＲＡＭ６の書き込み回数を削減できることによりＭＲＡＭチップの信頼性が向上する。
【００３６】
（第３の実施形態）
第３の実施形態は、ＭＲＡＭ６内のデータの誤り頻度に応じて、ＭＲＡＭ６をリフレッシュするリフレッシュ周期を制御するものである。
【００３７】
図７は第３の実施形態によるプロセッサシステム２の概略構成を示すブロック図である。図７のプロセッサシステム２は、図５と比べて、ＭＲＡＭリフレッシュコントローラ１５の内部構成が異なっており、その他の構成は共通する。
【００３８】
図７のＭＲＡＭリフレッシュコントローラ１５は、図５と同様のタイミング制御部２１、アドレス対応テーブル２２および誤り検出部２３を有する他に、誤り頻度検出部２４を備えている。
【００３９】
誤り頻度検出部２４は、ＭＲＡＭ６内に格納されたデータの誤り頻度を検出する。より詳細には、誤り頻度検出部２４は、誤り検出部２３の検出結果に基づいて、例えば、ＭＲＡＭ６の単位時間当たりのデータ誤り数またはビット誤り率を誤り頻度として検出する。タイミング制御部２１は、誤り頻度検出部２４が検出した誤り頻度に基づいて、リフレッシュ期間を制御する。より具体的には、タイミング制御部２１は、誤り頻度が高いほど、リフレッシュ頻度を高くする。一例としては、誤り頻度が低い場合には、ＤＲＡＭ５の複数のリフレッシュ期間に１回の割合でＭＲＡＭ６のリフレッシュを行い、誤り頻度が高くなると、ＤＲＡＭ５の各リフレッシュ期間が終わるたびにＭＲＡＭ６のリフレッシュを行うことが考えられる。
【００４０】
第３の実施形態は、第１の実施形態または第２の実施形態と組み合わせることが可能である。すなわち、図４または図６のフローチャートの処理を行うリフレッシュ間隔を、ＭＲＡＭ６の誤り頻度に応じて、タイミング制御部２１で制御する。
【００４１】
このように、第３の実施形態では、ＭＲＡＭ６内のデータの誤り頻度に応じて、ＭＲＡＭ６のリフレッシュ周期を制御するため、温度上昇等によってＭＲＡＭ６の誤り頻度が向上すると、リフレッシュ周期を短縮してデータの保持特性の低下を防止することができる。また、ＭＲＡＭ６の誤り頻度が低い場合は、リフレッシュ周期を長くして、ＭＲＡＭ６の書き込み回数と消費電力の削減を図ることができる。
【００４２】
（第４の実施形態）
第４の実施形態は、ＥＣＣ（Error Checking and Correcting）による誤り訂正が可能なうちにＭＲＡＭ６内のデータに存在するエラービットおよびラインに対して、ＭＲＡＭ６のリフレッシュを行うものである。
【００４３】
図８は第４の実施形態によるプロセッサシステム２の概略構成を示すブロック図である。図８のプロセッサシステム２は、図２と比べて、ＭＲＡＭリフレッシュコントローラ１５の内部構成が異なっており、その他の構成は共通する。
【００４４】
図８のＭＲＡＭリフレッシュコントローラ１５は、図２と同様のタイミング制御部２１とアドレス対応テーブル２２を有する他に、誤り検出部２３と、誤り訂正部２５と、エラーカウンタ２６と、カウント値判定部２７と、トリガ信号生成部２８とを有する。
【００４５】
誤り検出部２３は、ＭＲＡＭ６内のデータに誤りがあるか否かをビットまたはラインごとに検出する。誤り訂正部２５は、不揮発メモリ６内のデータに含まれる所定ビット数以内の誤りビットを訂正する。エラーカウンタ２６は、ＤＲＡＭ５から読み出したデータのうち、ＭＲＡＭ６内の対応するデータと異なるビットが検出された場合にカウントアップする。カウント値判定部２７は、エラーカウンタ２６のカウント値が所定の閾値を超えたか否かを判定する。
【００４６】
ＭＲＡＭリフレッシュコントローラ１５は、カウント値判定部２７にて閾値を超えたと判定された場合に、ＤＲＡＭ５から読み出したデータをＭＲＡＭ６に上書きする。
【００４７】
トリガ信号生成部２８は、カウント値判定部２７にて閾値を超えたと判定された場合にトリガ信号を生成して出力する。トリガ信号は、ＭＲＡＭ６のリフレッシュを指示する信号となる。ＭＲＡＭリフレッシュコントローラ１５は、トリガ信号が出力されると、後述するリフレッシュ処理手順を開始する。ＭＲＡＭ６内の誤りが多いほど、エラーカウンタ２６のカウント値はより大きくなり、より速いタイミングでトリガ信号が出力される。すなわち、ＭＲＡＭ６内のビット誤りが多いほど、リフレッシュ周期が短くなる。
【００４８】
図９は第４の実施形態によるＭＲＡＭ６のリフレッシュ処理手順を示すフローチャートである。まず、ＭＲＡＭリフレッシュコントローラ１５は、トリガ信号生成部２８からトリガ信号が出力されたか否かを判定する（ステップＳ２１）。トリガ信号が出力されていなければ、ＭＲＡＭ６のリフレッシュは行わずに、図９の処理を終了する。トリガ信号が出力されていれば、タイミング制御部２１は、ＤＲＡＭ５のリフレッシュが開始されたか否かを判定し（ステップＳ２２）、まだ開始されていなければ、ＤＲＡＭ５のリフレッシュが開始されるまで待機する。ここでは、タイミング制御部２１は、ＤＲＡＭ５のリフレッシュコマンドの発行をモニタし、リフレッシュコマンドが発行されると、ＤＲＡＭ５のリフレッシュが開始されたと判断する。
【００４９】
ＤＲＡＭ５のリフレッシュが開始されると、ＭＲＡＭリフレッシュコントローラ１５は、アドレス対応テーブル２２を参照して、ＭＲＡＭ６内のデータに対応するＤＲＡＭ５内のデータの読出リクエストをＤＲＡＭコントローラ１１に送信する（ステップＳ２３）。このとき送信するのは、ＭＲＡＭ６内の全てのデータに対応する読み出しリクエストでもよいし、一部のデータに対応する読み出しリクエストでもよい。
【００５０】
ＤＲＡＭ５のリフレッシュが終了すると（ステップＳ２４）、ステップＳ２３の読出リクエストに従って、ＤＲＡＭコントローラ１１は、ＤＲＡＭ５のデータを読み出して、ＭＲＡＭリフレッシュコントローラ１５に送信する（ステップＳ２５）。
【００５１】
最後に、ＤＲＡＭ５から読み出したデータでＭＲＡＭ６内の対応するデータを上書きする（ステップＳ２６）。ＭＲＡＭ６の中の一部のビットだけに誤りがある場合に、ＤＲＡＭ５から読み出したラインデータを単位として、ＭＲＡＭ６に上書きしてもよいし、ＤＲＡＭ５から読み出したラインデータのうち、誤り検出部２３で誤りが検出されたビットだけを、ＭＲＡＭ６に上書きしてもよい。このとき、ステップＳ２６の処理はＭＲＡＭ６の内部の読み出しおよび書き込み回路部分に実装してもよい。
【００５２】
図１０は第４の実施形態によるＭＲＡＭ６のトリガ信号出力手順を示すフローチャートである。まず、プロセッサ３からＭＲＡＭコントローラ１３を介してＭＲＡＭ６へ読み出しアクセスがあると、図１０の処理が開始される（ステップＳ３１）。次に、ＭＲＡＭ６からデータを読み出し、ＥＣＣ処理による誤り訂正の後、ＭＲＡＭ６の読み出しデータとしてＣＰＵ３に転送する。すなわち、ＭＲＡＭ６内にデータの誤りがあるか否かを判定し（ステップＳ３２）、誤りがある場合は、誤り訂正可能なビット数以下であれば訂正される。（ステップＳ３３、訂正可否判定部）。
【００５３】
ステップＳ３３で誤り訂正不可能と判定された場合はトリガ信号を出力する（ステップＳ３４）。このときのアドレスも同時に出力することでＭＲＡＭリフレッシュ対象アドレスが限定され、リフレッシュ時間や電力を削減できる。
【００５４】
ステップＳ３３で誤り訂正可能と判定された場合はエラーカウンタ２６をカウントアップする（ステップＳ３５）。エラーカウンタが一定値以上になった場合（ステップＳ３６）、トリガ信号を出力する（ステップＳ３４）。
この第４の実施形態において、誤り検出部２３と、誤り訂正部２５はＭＲＡＭ６の内部の読み出しおよび書き込み回路部分に実装してもよいしＭＲＡＭコントローラ１３に実装してもよい。
【００５５】
このように、第４の実施形態では、ＭＲＡＭ６内のデータに誤り訂正ができる限度を超えるビット誤りがある場合には、すぐトリガ信号を出力し、誤り訂正できる範囲の誤りがある場合にはエラーカウンタ２６をカウントアップし、エラーカウンタ２６のカウント値が閾値を超えると、ＭＲＡＭ６のリフレッシュを行うようにしたため、ＭＲＡＭ６の誤りの程度に応じて、ＭＲＡＭ６のリフレッシュタイミングを可変制御できる。よって、ＭＲＡＭ６の保持特性を維持しつつ、無駄にリフレッシュを行わなくて済むため、消費電力および書き換え回数を削減できる。
【００５６】
上述した第１〜第４の実施形態では、ＤＲＡＭ５のリフレッシュ終了後に、ＤＲＡＭ５から読み出したデータを用いてＭＲＡＭ６のリフレッシュを行ったが、ＭＲＡＭ６のリフレッシュを行う分のデータを格納する高速の揮発メモリ（例えば、ＳＲＡＭ）をＤＲＡＭ５とは別個に設けて、ＭＲＡＭ６のリフレッシュ用のデータは、ＤＲＡＭ５から読み出すのではなく、ＳＲＡＭから読み出してもよい。この場合、プロセッサ３からデータの書込みリクエストがあったときに、そのデータをＤＲＡＭ５だけでなく、ＳＲＡＭにも書き込むようにし、ＳＲＡＭ内のデータをＤＲＡＭ５に追い出す前に、ＭＲＡＭ６へのリフレッシュに利用すればよい。
【００５７】
上述した第３の実施形態や第４の実施形態では、ＭＲＡＭ６内のデータに誤りがあるか否かを検出しているが、誤り頻度ではなく、あるいは、誤り頻度に加えて、周囲温度を計測し、周囲温度が予め定めた設定範囲内から外れている場合には、リフレッシュ間隔を短縮してもよい。
【００５８】
上述した第１〜第４の実施形態では、揮発メモリ５としてＤＲＡＭ５を用い、不揮発メモリ６としてＭＲＡＭ６を用いる例を説明したが、これは一例であり、他の種類の揮発メモリ５や不揮発メモリ６を用いてもよい。
【００５９】
また、揮発メモリ５は、不揮発メモリ６と同様に、例えばＤＩＭＭ（Dual Inline Memory Module）の形態で、着脱可能にメモリシステム１に接続されてもよい。揮発メモリ５を、プロセッサ３とワンチップ化してもよいし、揮発メモリ５と不揮発メモリ６をプロセッサ３とワンチップ化してもよい。このように、揮発メモリ５と不揮発メモリ６の実装形態は特に問わない。
【００６０】
上述した実施形態で説明したプロセッサシステム２およびメモリシステム１の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、プロセッサシステム２およびメモリシステム１の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【００６１】
また、プロセッサシステム２およびメモリシステム１の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【００６２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６３】
１  メモリシステム、２  プロセッサシステム、３  プロセッサ、４  バス、５  揮発メモリ、６  不揮発メモリ、７  第１リフレッシュ制御部、８  第２リフレッシュ制御部、１１  ＤＲＡＭコントローラ、１２  ＤＲＡＭ−ＰＨＹ、１３  ＭＲＡＭコントローラ、１４  ＭＲＡＭ−ＰＨＹ、１５  ＭＲＡＭリフレッシュコントローラ、２１  タイミング制御部、２２  アドレス対応テーブル、２３  誤り訂正部、２４  誤り頻度検出部、２５  誤り訂正部、２６  エラーカウンタ、２７  カウント値判定部、２８  トリガ信号生成部
【図１】
2018049671.tif 000003
【図２】
2018049671.tif 000004
【図３】
2018049671.tif 000005
【図４】
2018049671.tif 000006
【図５】
2018049671.tif 000007
【図６】
2018049671.tif 000008
【図７】
2018049671.tif 000009
【図８】
2018049671.tif 000010
【図９】
2018049671.tif 000011
【図１０】
2018049671.tif 000012