(57)【要約】【課題】メモリコントローラ搭載型の不揮発性メモリデバイスにおいて、セルの書換回数の進行度合いに応じた適切なタイミングでデータのリフレッシュ処理を実行する。【解決手段】データのリフレッシュ処理が必要な不揮発性のメモリデバイスの制御装置であって、前記メモリデバイスは、データの書き換えができる不揮発性のメモリ部と、前記メモリ部に対するデータの読み出し及び書き込みを制御するメモリコントローラと、前記メモリ部のセルの寿命状態を示す寿命情報を管理する寿命管理部と、を備え、前記制御装置は、前記メモリデバイスから前記寿命情報を取得し、取得した寿命情報に応じた前記リフレッシュ処理の実施時期を設定し、設定した実施時期が到来すると、前記リフレッシュ処理の実施を前記メモリデバイスに指示する、ことを特徴とする制御装置。【選択図】図３
2016206981.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリデバイスの制御装置であって、
前記メモリデバイスは、
データの書き換えができる不揮発性のメモリ部と、
前記メモリ部に対するデータの読み出し及び書き込みを制御するメモリコントローラと、
前記メモリ部のセルの寿命状態を示す寿命情報を管理する寿命管理部と、
を備え、
前記制御装置は、
前記メモリデバイスから前記寿命情報を取得し、前記セルに格納されたデータのリフレッシュ処理の実施時期を、取得した前記寿命情報に応じて設定し、設定した実施時期が到来すると、前記リフレッシュ処理の実施を前記メモリデバイスに指示する、
ことを特徴とする制御装置。
【請求項２】
前記制御装置は、直近の前記リフレッシュ処理を実施した時期に所定の期間を加算することにより、前記寿命情報を取得するタイミングを決定することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記制御装置は、前記書き換えの回数が所定回数を超えるようなイベントが実行された場合、前記決定されたタイミングに関わらず前記寿命情報を取得し、取得した寿命情報に応じた前記リフレッシュ処理の実施時期を設定することを特徴とする請求項２に記載の制御装置。
【請求項４】
前記寿命情報は、前記書き換えの回数の進行度合いを示す値であり、
前記制御装置は、前記メモリ部に格納されるデータを正常に判別するための閾値となる電位を割らないようにするために要求されるデータリフレッシュ期間と前記書き換えの回数の進行度合いとを対応付けたＬＵＴを参照し、取得した前記進行度合いを示す値に応じた前記データリフレッシュ期間を、直近の前記リフレッシュ処理を実施した時期に加算することにより、前記リフレッシュ処理の実施時期を設定することを特徴とする請求項１乃至３のいずれか１項に記載の制御装置。
【請求項５】
前記ＬＵＴは、特性の異なるメモリデバイス毎に作成され、
前記制御装置は、前記メモリデバイスを識別するデバイスＩＤを用いて、当該デバイスＩＤによって特定されるメモリデバイスについての前記リフッレシュ処理の時期を設定する請求項４に記載の制御装置。
【請求項６】
前記ＬＵＴに規定される前記書き換え回数の進行度合いと対応付けられる前記データリフレッシュ期間は、前記メモリデバイスが有する前記メモリ部の書き換え回数に対応するデータ保持可能期間を上回らないことを特徴とする請求項４又は５に記載の制御装置。
【請求項７】
前記書き換えの回数の進行度合いを示す値は、前記メモリ部の各セルにおける書き換え回数の平均値であることを特徴とする請求項４乃至６のいずれか１項に記載の制御装置。
【請求項８】
請求項１乃至７のいずれか１項に記載の制御装置と、前記メモリデバイスとで構成される、不揮発性のメモリデバイスの制御システム。
【請求項９】
不揮発性のメモリデバイスにおけるデータのリフレッシュ処理の制御方法であって、
前記メモリデバイスは、
データの書き換えができる不揮発性のメモリ部と、
前記メモリ部に対するデータの読み出し及び書き込みを制御するメモリコントローラと、
前記メモリ部のセルの寿命状態を示す寿命情報を管理する寿命管理部と、
を備え、
前記メモリデバイスから前記寿命情報を取得するステップと、
取得した寿命情報に応じた前記リフレッシュ処理の実施時期を設定するステップと、
設定した実施時期が到来すると、前記リフレッシュ処理の実施を前記メモリデバイスに指示するステップと、
を含むことを特徴とする制御方法。
【請求項１０】
コンピュータを、請求項１乃至７のいずれか１項に記載の制御装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリコントローラを搭載した不揮発性メモリデバイス（ｅＭＭＣ（登録商標）、ＳＳＤ、ＵＦＳなど）におけるデータリフレッシュの制御に関する。
【背景技術】
【０００２】
デジタル電化製品は年々進化を続け、機能が増加している。そして、それに伴い、製品を動かすためのプログラムのデータ量も増大してきている。これまでこういったプログラムは、高い信頼性を特徴とするＮＯＲ型フラッシュメモリに格納されることが多かった。しかし、プログラムのデータ量が増大してきた昨今、ＮＯＲ型フラッシュメモリで必要な容量を確保しようとすると、製品コストが増大してしまう。そこで、比較的安価なＮＡＮＤ型フラッシュメモリへの置き換えが進んでいるものの、信頼性の観点から問題があった。これは、ＮＡＮＤ型フラッシュメモリのデータ保持特性、具体的には、書換回数の進行に伴って半導体セル（以下、単に「セル」と呼ぶ。）が劣化するという性質に起因している。
【０００３】
上記のような状況の中で、ＮＡＮＤ型フラッシュメモリの集積化がより進み、更に安価に大容量を実現してきた。集積化が進むことで、上述した信頼性は悪化する傾向にあったが、それに関してはメモリコントローラからの様々な制御によって問題の顕在化が回避されている。具体的な制御内容としては、不良ブロックの管理、エラー訂正（ＥＣＣ）、論理−物理アドレス変換を含んだ書換回数の平均化（ウェアレベリング）等が知られている。しかし、上記のようなメモリコントローラによる制御によっても、データの書換回数が進行することによるセルの劣化は避けられない。そのため、プログラムを長期間使用する際のデータ損失を回避するべく、セルに電荷を補充してデータ保持期間を延ばす処理（リフレッシュ処理）の定期的な実行が必須となるが、不必要なリフレッシュ処理は書換回数を増やすことになる。また、劣化度は使用頻度に拠るので、セルの劣化は一律ではなく動的に変化するものである。そこで、例えば、読み書き可能なデータ用ＲＯＭに対する書き込み回数をＣＰＵでカウントし、カウント数に基づいてデータの再書き込み（上述のリフレッシュ処理に相当）の間隔を変更する技術が提案されている（特許文献１参照）。
【０００４】
上述のように、メモリコントローラからの制御によって不揮発性メモリのデータ保持特性の悪化を回避するための工夫がなされているが、その際には、ユーザーが制御を作り込む必要があった。こうした背景の中、このような制御を実行するメモリコントローラをＩＣ内部に組み込むことでユーザーの負担を減らした、メモリコントローラ搭載型の不揮発性メモリデバイス（以下、「コントローラ搭載メモリ」と呼ぶ。）が登場してきている。そして、このようなコントローラ搭載メモリは、携帯電話やタブレットＰＣなどのモバイル機器をはじめ、家電、車載、エンターテインメント機器など様々なデジタル電化製品で使用されるようになっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１７１６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したコントローラ搭載メモリにおいても、書き換えを繰り返し、長期の使用が想定される機器では、上述したセルの劣化に伴うデータ保持特性の悪化という問題が従来同様に発生する。また、メモリコントローラがＩＣ内部に搭載されたことによって、データの書き換えは、書換対象のデータを特定するアドレス（ＩＣ外部からのアドレス信号）  が内部で論理−物理アドレス変換されて行われる。そして、ウェアレベリングによってセルの書換回数は平均化されるため、セルの物理的な劣化と、ＩＣ外部からのコントローラ搭載メモリへのアクセス回数とが直接には結びつかないことになる。そのため、例えば特許文献１に記載の技術では、想定されたデータ保持期間に対して必要以上に短い間隔でリフレッシュ処理が実施され得ることになる。
【課題を解決するための手段】
【０００７】
本発明に係る制御装置は、不揮発性メモリデバイスの制御装置であって、前記メモリデバイスは、データの書き換えができる不揮発性のメモリ部と、前記メモリ部に対するデータの読み出し及び書き込みを制御するメモリコントローラと、前記メモリ部のセルの寿命状態を示す寿命情報を管理する寿命管理部と、を備え、前記制御装置は、前記メモリデバイスから前記寿命情報を取得し、前記セルに格納されたデータのリフレッシュ処理の実施時期を、取得した前記寿命情報に応じて設定し、設定した実施時期が到来すると、前記リフレッシュ処理の実施を前記メモリデバイスに指示する、ことを特徴とする制御装置。
【発明の効果】
【０００８】
本発明によれば、メモリコントローラ搭載型の不揮発性メモリデバイスにおいて、セルの書換回数の進行度合いに応じた適切なタイミングでデータのリフレッシュ処理を実行することができる。これにより、不要な書き換えを抑制でき、セルの劣化の進行を抑えることができる。
【図面の簡単な説明】
【０００９】
【図１】メモリコントローラ搭載型の不揮発性メモリデバイスを制御する制御システムのハードウェア構成の一例を示す図である。
【図２】ｅＭＭＣ内部のメモリ部の寿命に関わる特性を示すグラフの一例である。
【図３】データ処理装置におけるリフレッシュ処理の制御の流れを示すフローチャートである。
【図４】制御処理で使用される各種パラメータとそのデータ内容をまとめたテーブルの一例である。
【図５】書換回数進行度とメモリデバイス毎のデータリフレッシュ期間とを対応付けたＬＵＴの一例である。
【図６】リフッレシュ処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して、本発明を実施する形態について説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１１】
［実施例１］
図１は、本実施例に係る、メモリコントローラ搭載型の不揮発性メモリデバイスを制御するメモリ制御システムのハードウェア構成の一例を示す図である。メモリ制御システムは、不揮発性メモリデバイスを制御する制御装置としてのデータ処理装置１００と、メモリコントローラを搭載した不揮発性メモリデバイスであるｅＭＭＣ（embedded MultiMediaCard）１１０とで構成される。そして、データ処理装置１００とｅＭＭＣ１１０とは、バス１２０を介して相互に接続されている。なお、以下では、メモリコントローラを搭載した不揮発性メモリデバイスとして、専らｅＭＭＣを例に説明を行なうものとするが、当然のことながらｅＭＭＣは一例であってこれに限定されるものではない。例えば、ＳＳＤやＵＦＳといった他の不揮発性メモリデバイスについても幅広く適用可能である。
【００１２】
データ処理装置１００は、ｅＭＭＣ１１０にアクセスしてデータの読み出しや書き込みを行なう。データ処理装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、メモリホストＩ／Ｆ１０３、表示部Ｉ／Ｆ１０４、表示部１０５、操作部Ｉ／Ｆ１０６、操作部１０７、外部Ｉ／Ｆ１０８、ＲＴＣ１０９で構成される。
【００１３】
ＣＰＵ１０１は、データ処理装置１００全体を制御する中央演算装置である。ＲＡＭ１０２は、ＣＰＵ１０１が動作するためのシステムワークメモリである。ＣＰＵ１０１は、ｅＭＭＣ１１０からプログラムを取得してＲＡＭ１０２上に展開し、演算や各種制御などを行う。メモリホストＩ／Ｆ１０３は、ＣＰＵ１０１の制御により、ｅＭＭＣ１１０とのデータの入出力を行うインタフェースである。表示部Ｉ／Ｆ１０４は、ＣＰＵ１０１の制御により、表示部１０５へ表示信号を送付するインタフェースである。表示部１０５は、液晶パネルやＬＥＤなどから成り、表示や点灯／点滅／消灯することで、ユーザーに情報を伝達する。操作部Ｉ／Ｆ１０６は、操作部１０７と接続しており、操作部１０７からの電気信号をＣＰＵ１０１に送付するインタフェースである。操作部１０７はタッチパネルやキーなどから成り、ユーザーの操作による情報をＣＰＵ１０１に伝達する。外部Ｉ／Ｆ１０８はＵＳＢ等のインタフェースにより、外部とのデータ入出力を行うことができるように構成されている。ＲＴＣ１０９は、時間を管理するために搭載された現在時刻を刻み続けるための機能部である。システム本体の電源がＯＦＦの状態でも動作するように電池でも駆動可能な構成をとる。これらのモジュールは、内部バスを介してＣＰＵ１０１と接続しており、ＣＰＵ１０１の制御により、互いに連携して動作する。
【００１４】
ｅＭＭＣ１１０は、メモリＩ／Ｆ１１１、寿命管理部１１２、メモリコントローラ１１３、第１メモリ部１１４、第２メモリ部（冗長領域）１１５とで構成される。
【００１５】
メモリＩ／Ｆ１１１は、データ処理装置１００との間でデータの入出力を行うインタフェースである。寿命管理部１１２は、ｅＭＭＣ１１０の寿命（データ保持可能期間を管理するモジュールであり、メモリコントローラ１１３が寿命確認コマンドを受け取ると、そのときのｅＭＭＣ１１０のセルの寿命状態を表す指標のデータ（寿命情報）をレスポンスとして返す。メモリコントローラ１１３は、第１メモリ部１１４、冗長領域１１５、寿命管理部１１２と接続しており、受信した各種コマンドを解釈し、そのコマンドに応じた動作を行う。基本的なコマンドとしては、データの読み出しを指示する読出コマンド、データの書き込みを指示する書込コマンド、データの消去を指示する消去コマンドがあり、これらコマンドによって所定のアドレスのデータの読み書きや消去が実行される。第１メモリ部１１４は、データを記録する不揮発性のメモリ領域であり、複数のセルから構成されている。メモリコントローラ１１３からの制御により、第１メモリ部１１４内のセルに電荷を保持するか否かでデータを記録するようになっている。本実施例では、システムが動作するためのメインのプログラムは、この第１メモリ部１１１４に格納されている。第１メモリ部１１４内のセルは、データの読み書きや消去を繰り返すうちに劣化が進むため、寿命に到達したセルは不良セルとして未使用にし、冗長領域１１５のセルを代替して使用していく。このようなセルの劣化具合を示す情報として、書換回数や余剰ブロック数に関するデータが、寿命管理部１１２により寿命情報として管理される。寿命管理部１１２は、寿命確認コマンドを受け取ると、寿命情報として、セル毎の書換回数からみた寿命を評価する値や、冗長領域１１５の余剰ブロック数に応じた寿命を評価する値をレスポンスとして返す。まず、ウェアレベリングによってセル毎の書換回数は平均化されるため、セルの書き換え回数からみた寿命の評価値は、平均値で扱われる。本実施例では、寿命に到達したものとして想定している書換回数（寿命書換回数）に対しどの程度書き換えが行なわれたのかを示す値（書換回数の進行度合いを示す値）を、10％刻みで、セル毎の書換回数に応じた寿命の評価値として返すこととしている。以下、この10％刻みの値を「書換回数進行度」と呼ぶこととする。もちろん10％刻みは一例であり、5％刻みや20％刻みであってもよい。また、セルの書換回数からみたセルの寿命を評価可能な情報であればよいので、例えばセル毎の書換回数の値を平均した値そのものでもよいし、書換回数の進行度合いを例えば「レベル１〜５」といったように複数段階のレベルで表した値であってもよい。さらに、寿命管理部１１２は、書換回数が寿命書換回数に達した場合に、現在の書換回数がメモリデバイスの寿命を上回っていることを示すステータスを返す。寿命を上回ったことを示すステータスが返された以降は、保証外の実力（性能）で動作することになる。次に、冗長領域１１５の余剰ブロック数に応じた寿命を評価する値としては、例えば「0」又は「1」の２値で表されるフラグが考えられる。本実施例では、余剰ブロックの80％が代替として使用されるとWarningフラグを立て、余剰ブロックの100％が代替として使用されるとUrgentフラグを立て���こととしている。Urgentフラグが立つと、ｅＭＭＣ１１０はそれ以降、データの書き込みや消去が出来ない状態となり、読み出しだけ可能となる。ホスト側であるデータ処理装置１００は、上述した書換回数進行度の数値やフラグの有無によって、ｅＭＭＣ１１０の寿命が残りどれくらいなのかを知ることができる。
【００１６】
図２は、ｅＭＭＣ１１０内部のメモリ部（第１メモリ部１１４＋冗長領域１１５）の寿命に関わる特性を示すグラフの一例である。このグラフでは、使用環境Ｘ℃の下におけるデータ保持可能期間と書換回数の関係が示されている。メモリ部のこのような特性は、その構造や使用する半導体プロセスなどの違いによりメーカー毎に異なる。図２のグラフでは、Ａ社のｅＭＭＣ製品の特性を破線で、Ｂ社のｅＭＭＣ製品の特性を２点鎖線でそれぞれ示している。このグラフからは、Ａ社製品の方がより長寿命であることが理解できる。ただし、使用する温度環境によってこの特性は変動し得る。そのため、後述するリフレッシュ処理の実施時期（＝リフレッシュ処理の間隔）の設定においては、様々な評価指標の結果から、どのような特性を設定基準に使用するのかを選定する必要がある。
【００１７】
次に、本実施例に係る、ｅＭＭＣ１１０に対するリフレッシュ処理の制御について説明する。図３は、データ処理装置１００におけるリフレッシュ処理の制御の流れを示すフローチャートである。この一連の処理は、ＣＰＵ１０１が、ｅＭＭＣ１１０に格納されているプログラムをＲＡＭ１０２にロードし、実行することで実現される。
【００１８】
ステップ３０１では、メモリ制御システムの電源が入った現在時刻のデータがＲＴＣ１０９から取得される。取得された現在時刻データは、システムへの電源ＯＮの日時を示すパラメータ「電源ＯＮ日時」として、ＲＡＭ１０２上に保持される。図４は、本制御処理で使用される各種パラメータとそのデータ内容をまとめたテーブルの一例である。図４のテーブルにおいて、列４１０と列４２０は、起動後初めてのリフレッシュ処理を挟んだ前後のデータ内容をそれぞれ示している。いま、現在時刻データとして取得されたデータ“2014/10/23/9:13:30”が、パラメータ「電源ＯＮ日時」として設定・保持されている。
【００１９】
ステップ３０２では、システムに電源が入って始めての起動（当該電源ＯＮ後にリフレッシュ処理が１度も実行されていない状態での起動）であるかどうかが判定される。起動が初回のものかどうかは、リフレッシュ処理を実施した直近の日時を示すパラメータ「前回リフレッシュ実施日時」にデータが設定・保持されているかどうかで判別される。「前回リフレッシュ実施日時」にデータが設定されていない場合は、初回の起動と判定されて、ステップ３０３へ進むことになる。一方、「前回リフレッシュ実施日時」にデータが設定されている場合は、初回の起動ではないと判定されて、ステップ３０４へ進む。
【００２０】
ステップ３０３では、ステップ３０１で取得し「電源ＯＮ日時」として設定・保持された現在時刻のデータが、パラメータ「前回リフレッシュ実施日時」の内容として設定され、ＲＡＭ１０２上に保持される。図４に示すテーブルの列４１０には、本ステップの結果として、「電源ＯＮ日時」に設定されたデータ内容と同じ“2014/10/23/9:13:30”が、「前回リフレッシュ実施日時」のデータとして設定されている。
【００２１】
ステップ３０４では、リフレッシュ処理が実施された直近の日時を表すことになる、後述のパラメータ「リフレッシュ実施日時」のデータが、「前回リフレッシュ実施日時」の内容として設定され、ＲＡＭ１０２上に保持される。本ステップの具体例については後述する。
【００２２】
ステップ３０５では、セルの書換回数に応じた寿命の評価値である上述のパラメータ「書換回数進行度」に設定されたデータが更新される。具体的には、まず、ＣＰＵ１０１によって寿命確認コマンドがメモリホストＩ／Ｆ１０３を介してｅＭＭＣ１１０に送信される。寿命確認コマンドを受け取ったｅＭＭＣ１１０では、メモリコントローラ１１３が寿命管理部１１２に管理されている「書換回数進行度」のデータ（数値）をレスポンスする。レスポンスを受け取ったＣＰＵ１０１は、その数値で現在の「書換回数進行度」の数値を更新する。列４１０に示すリフレッシュ処理実行前の段階では、寿命の評価値として“10〜20％”が、パラメータ「書換回数進行度」に設定・保持されている。
【００２３】
ステップ３０６では、「書換回数進行度」のデータを定期的に更新するために必要となる、次に寿命確認コマンドを送信するタイミングが、パラメータ「書換回数進行度の次回確認日時」として設定される。セルの書換回数は、ｅＭＭＣ１１０に定期的にアクセスするような使用態様であれば、時間の経過と共に増加していくものである。本実施例は、そのような使用態様を想定した時の、セルの劣化が進むのに合わせて変化するデータ保持可能期間に追従してデータ損失を救うことを念頭に置いている。そのため、寿命管理部１１２で管理されるセルの劣化具合を示す情報の更新が必要となる。そこで、プログラム上で、予め次回の更新日時を「書換回数進行度の次回確認日時」として設定することとしている。具体的には、予め定めた任意の更新期間（例えば30日）に基づいて、「前回リフレッシュ実施日時」の内容に30日を加算した内容が「書換回数進行度の次回確認日時」として設定・保持される。例えば、列４１０に示すリフレッシュ処理実行前の段階では、「前回リフレッシュ実施日時」の設定内容である“2014/10/23/9:13:30”に30日を加算した“2014/11/22/9:13:30”が、「書換回数進行度の次回確認日時」の内容として設定・保持されている。
【００２４】
ステップ３０７では、ステップ３０５で更新された「書換回数進行度」の内容に応じた日時が、次にリフレッシュ処理を実施する時期を示すパラメータ「リフレッシュ実施日時」として設定される。具体的には、書換回数進行度とメモリデバイス毎（ここではメーカー毎）のデータリフレッシュ期間とを対応付けたＬＵＴを参照して、次回のリフレッシュ処理の実施タイミングが決定され、設定・保持される。ここで、データリフレッシュ期間は、セルの電位がｅＭＭＣ１１０のメモリ部に格納されるデータを正常に判別するための閾値となる電位を割らないようにするために要求される、リフレッシュ処理の頻度を示す期間である。このデータリフレッシュ期間は、書換回数の進行度合いに応じて変化する。図５は、書換回数進行度とメモリデバイス毎（メーカー毎）のデータリフレッシュ期間とを対応付けたＬＵＴの一例を示している。図５に示すＬＵＴの例では、10％刻みの書換回数進行度に対応するデータリフレッシュ期間が、Ａ社製ｅＭＭＣとＢ社製ｅＭＭＣのそれぞれについて規定されている。このようなＬＵＴを予め作成しておくことになるが、その際、データリフレッシュ期間の値は、書換回数に対応するデータ保持可能期間を上回らない値にすることが必要である。例えば、データ保持可能期間に80％を乗じた期間にするなどマージン持たせることが望ましい。このＬＵＴは、ｅＭＭＣ１１０に格納・保持され、本ステップにおいて参照される。どのメモリデバイスのデータリフレッシュ期間を参照するかは、ｅＭＭＣ１１０がユニークに持つデバイスＩＤによって特定される。このデバイスＩＤは、パラメータ「搭載デバイスＩＤ」としてＲＡＭ１０２上に保持される（図４のテーブルを参照）。なお、デバイスＩＤは、システムに電源が入ってプログラムが展開される時にＲＡＭ１０２に保持されるようにしてもよいし、本ステップに処理が進んだ時点でＣＰＵ１０１がホストＩ／Ｆ１０３を介してｅＭＭＣ１１０にアクセスして取得するようにしてもよい。そして、図５に示したようなＬＵＴを参照し、「搭載デバイスＩＤ」に設定されたデバイスＩＤに対応したデータリフレッシュ期間が、書換回数進行度の数値に応じて決定される。例えば、「書換回数進行度」の数値が“10〜20％”で、「搭載デバイスＩＤ」の内容がＢ社のメモリデバイスを識別するものであったとする。この場合の書換回数進行度に応じたデータリフレッシュ期間は、図５のＬＵＴより“5ヶ月”となる。その結果、「前回リフレッシュ実施日時」の内容“2014/10/23/9:13:30”に“5ヶ月”を加算した“2015/3/23/9:13:30”が「リフレッシュ実施日時」の内容として設定・保持されることになる（図４のテーブルの列４１０を参照）。
【００２５】
ステップ３０８では、ステップ３０７で設定されたリフレッシュ処理の実施時期が到来しているかどうかが判定される。具体的には、例えばＲＴＣ１０９への定期的なポーリングで現在の時刻データを取得し、取得した時刻データで特定される日時が、「リフレッシュ実施日時」に設定されている日時に到達しているかによって判定される。また、ＲＴＣ１０９にタイマー機能がある構成であれば、「リフレッシュ実施日時」に設定された日時をＲＴＣ１０９に設定し、当該設定日時になった際のＣＰＵ１０１へのプッシュ通知を受けることで到達を判別するようにしてもよい。「リフレッシュ実施日時」に到達したかどうかを判別できればよく、その手法は限定されない。現在日時が「リフレッシュ実施日時」の設定日時（列４１０に示すリフレッシュ処理実行前の段階では“2015/3/23/9:13:30”）に到達していると判定された場合は、ステップ３０９に進む。一方、現在日時が「リフレッシュ実施日時」の設定日時に到達していないと判定された場合は、ステップ３１０に進む。
【００２６】
ステップ３０９では、所定のリフレッシュ処理の実行がｅＭＭＣ１１０に指示される。具体的なリフレッシュ処理の内容については後述する。リフレッシュ処理の終了後はステップ３０４へ戻り、現時点での「リフレッシュ実施日時」のデータ（ここでは“2015/3/23/9:13:30”）が、「前回リフレッシュ実施日時」の内容として設定・保持されることになる（リフレッシュ処理実行後のデータ内容を示す列４２０を参照）。そして、続くステップ３０５では「書換回数進行度」のデータが更新される（ここでは“70〜80％”に更新されている。列４２０を参照。）。さらに、続くステップ３０６では新たな「書換回数進行度の次回確認日時」が設定されることになるが、図４の例（列４２０）ではデータ内容がブランクになっている。これは、以下のような理由による。
【００２７】
まず、現時点の「前回リフレッシュ実施日時」の内容“2015/3/23/9:13:30”に30日を加算すると“2015/4/22/9:13:30”となり、問題がなければこれが新たな「書換回数進行度の次回確認日時」として設定されることになる。一方で、現時点の「書換回数進行度」である“70〜80％”に対応するデータリフレッシュ期間は“20日”である（図５のＬＵＴを参照）。したがって、現時点の「前回リフレッシュ実施日時」の内容“2015/3/23/9:13:30”に20日を加算した“2015/4/12/9:13:30”が、次の「リフレッシュ実施日時」として設定される（ステップ３０７）。つまり、このケースでは新たな「書換回数進行度の次回確認日時」よりも先に、次回の「リフレッシュ実施日時」が到来することになって、書換回数進行度の確認が無意味となる。したがって、次の「書換回数進行度の次回確認日時」よりも先に、次の「リフレッシュ実施日時」が到来することになる場合には、新たな「書換回数進行度の次回確認日時」の設定は行なわない。或いは設定自体は行なってもよいが無視される。
【００２８】
ステップ３１０では、現在の日時が、ステップ３０７で設定された「書換回数進行度の次回確認日時」に到達しているかどうかが判定される。判定の手法は、ステップ３０８と同様なので説明を割愛する。現在日時が「書換回数進行度の次回確認日時」の設定日時に到達していると判定された場合はステップ３０５へ戻り、「書換回数進行度」及び「書換回数進行度の次回確認日時」の内容を更新し、必要に応じて新たな「リフレッシュ実施日時」を設定する。一方、現在日時が「書換回数進行度の次回確認日時」の設定日時に到達していないと判定された場合は、ステップ３１１に進む。
【００２９】
ステップ３１１では、所定のイベントがあったかどうかが判定される。ここで、所定のイベントとは、ｅＭＭＣ１１０へのアクセスで、書換回数が所定回数を超えて大量に進行するようなイベントを指す。例えば、ファームウェアのアップデートといった大容量データの更新や、一度にデータの書き換えが１００回以上行われた場合などがこれに該当し得る。このような特定のイベントを予め設定しておき、本ステップで所定のイベントの実行の有無が判定される。所定のイベントが実行されていた場合は、ステップ３０５へ戻り、それ以降の処理が繰り返される。一方、所定のイベントが実行されていない場合は、ステップ３０８へ戻って、リフレッシュ処理の実施時期の到来のチェックが繰り返される。
【００３０】
以上が、データ処理装置１００で実行されるリフレッシュ処理の制御の内容である。このような制御を行うことでコントローラ搭載型の不揮発性メモリデバイスにおいて、適切なタイミングでデータリフレッシュを実行することが可能となる。
【００３１】
次に、上述のステップ３０９におけるデータリフレッシュ処理の詳細について説明する。前述のとおり、リフレッシュ処理はデータ保持可能期間を延長させる処理であり、その中身は“0”又は“1”のデータを正常に判別することができるよう、セルにチャージされた電荷をチャージし直すことである。本実施例に係るｅＭＭＣのような不揮発性メモリデバイスでは、わずかではあるが自然放電により電荷が抜ける。そして、メモリの使用頻度が多いほど（書き換えを繰り返すほど）、この自然放電による電荷の抜けは悪化、すなわち、より短期間で電荷が抜けてしまう。そして、自然放電によって電荷のチャージレベルが、上述のデータ判別のための閾値を割ってしまうとデータ損失となってしまう。このような事態を回避するためのセルに電荷を補充する処理が本明細書で言うリフレッシュ処理である。一般的なリフレッシュ処理では、セルに同じデータを書き込むことがなされる。本実施例が前提とするメモリコントローラ搭載型の不揮発性メモリデバイスの場合は、メモリコントローラ１１３の処理、或いはＣＰＵ１０１のメモリホストＩ／Ｆ１０３を介したアクセスによってその内容が変わってくる。以下では、リフレッシュ処理のパターンを分けて説明する。
【００３２】
＜パターン１＞
まず、データ処理装置１００のＣＰＵ１０１が、ｅＭＭＣ１１０に対しデータの読み出し指示を行うことで、メモリコントローラ１１３がアクセスしたセルへの電荷をチャージし直す方法が考えられる。これは、データの読み出し指示を受けたメモリコントローラ１１３が必要に応じて行なう、アクセス先となるセルの移し変えに伴う実質的なリライト処理によって電荷の補充を実現するものである。この際、例えば重要度を決めて読み出す領域を限定したり、分割して全部の領域を読み出すといった方法が考えられる。
【００３３】
＜パターン２＞
次に、データ処理装置１００のＣＰＵ１０１が、ｅＭＭＣ１１０に対し再度同じデータの書き込み指示を行うことで、メモリコントローラ１１３がアクセスしたセルへの電荷をチャージし直す方法が考えられる。通常、再度同じデータを書き込む場合は、ＲＡＭ１０２上に展開されたデータを用いて書き直すことがなされる。この場合、同じデータの書き込みが行えるかどうかは、データ処理装置１００のＲＡＭ１０２の容量にもよる。また、プログラムとして参照されないデータの場合は、ｅＭＭＣ１１０に格納されたままでＲＡＭ１０２に展開されていない場合もある。この場合は未展開のデータを一度ＲＡＭ１０２に読み出して展開し、再度書き戻すことで実現される。
【００３４】
＜パターン３＞
次に、ｅＭＭＣ１１０に対しデータの読み出しを行った上で、読み出したデータが何らかの原因で本来あるべきデータと違ってしまっている可能性が高い場合に、ＲＡＭ１０２上に展開されている正しいデータを書き戻す方法が考えられる。図６は、このパターン３におけるリフッレシュ処理の詳細を示すフローチャートである。
【００３５】
ステップ６０１では、ＣＰＵ１０１がｅＭＭＣ１１０に対し読み出し指示を行い、リフレッシュ処理の対象となるデータが読み出される。この際の読み出し対象は、パターン１と同様、重要度を決めて読み出す領域を限定してもよいし、分割して全部の領域を読み出してもよい。  
【００３６】
ステップ６０２では、読み出したデータとＲＡＭ１０２上に展開されたプログラムデータとの比較がなされる。具体的には、チェックサムなどの誤り検出符号を用い、読み出しデータとＲＡＭ１０２上の展開データとの間に不一致があるかどうかが判別される。両データの比較のための十分な領域があれば、データの全領域についてチェックを行なってもよい。どのような方法によって読み出しデータとＲＡＭ１０２上の展開データとの比較を行なうかは任意であり、システムを構成する記憶装置の容量や性能に応じて最適な比較方法を選択すればよい。
【００３７】
ステップ６０３では、ステップ６０２の比較によって両データの間に不一致があったかどうかが判定される。不一致がなかった場合は、本処理を抜ける。一方、不一致があった場合は、ステップ６０４へ進む。
【００３８】
ステップ６０４では、データの不一致があった領域におけるデータの書き戻しが実行される。この書き戻しの方法も任意であり、システムを構成する記憶装置の容量や性能に応じて最適な書き戻し方法を選択すればよい。
【００３９】
以上のとおり本実施例によれば、メモリコントローラ搭載型の不揮発性メモリデバイスにおいて、セルの書換回数の進行度合いに応じた適切なタイミングでリフレッシュ処理を実行することができる。これにより不要な書き換えが抑制され、セルの劣化の進行が抑えられる。
【００４０】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2016206981.tif 000003
【図２】
2016206981.tif 000004
【図３】
2016206981.tif 000005
【図４】
2016206981.tif 000006
【図５】
2016206981.tif 000007
【図６】
2016206981.tif 000008