(57)【特許請求の範囲】
【請求項１】
フレーム周期に応じたタイミングで不揮発性メモリからデータ読出を行うメモリ制御システムにおいて、前記不揮発性メモリに記憶されているデータに対してデータ回復処理を実行するデータ回復方法であって、
前記フレーム周期の１周期の期間を真性フレーム期間として計測する真性フレーム期間計測ステップと、
前記フレーム周期の１周期における前記データ読出の開始から完了までの期間をリード期間として計測するリード期間計測ステップと、
前記真性フレーム期間において前記データ読出を実行しない期間をアイドル期間として算出するアイドル期間算出ステップと、
前記アイドル期間において前記データ回復処理を実行するデータ回復ステップと、
を含むことを特徴とする不揮発性メモリのデータ回復方法。
【請求項２】
前記フレーム周期毎に、前記真性フレーム期間の先頭から前記リード期間が開始する第１のデータ読出と、前記真性フレーム期間の途中から前記リード期間が開始する第２のデータ読出と、を含む２回の前記データ読出を行うステップと、
前記真性フレーム期間の先頭から前記第２のデータ読出の開始までの期間を第１疑似フレーム期間として計測し、前記第２のデータ読出の開始から次のフレーム周期の先頭までの期間を第２疑似フレーム期間として計測する疑似フレーム期間計測ステップと、
をさらに含み、
前記リード期間計測ステップは、前記第１疑似フレーム期間における前記データ読出の開始から完了までの期間を第１リード期間として計測し、前記第２疑似フレーム期間における前記データ読出の開始から完了までの期間を第２リード期間として計測するステップを含み、
前記アイドル期間算出ステップは、前記真性フレーム期間から前記第１疑似フレーム期間と前記第２リード期間とを減算して、前記第２疑似フレーム期間において前記データ読出を実行しない期間を副アイドル期間として算出するステップを含み、
前記データ回復ステップは、前記副アイドル期間において前記データ回復処理を実行するステップを含む、
ことを特徴とする請求項１に記載の不揮発性メモリのデータ回復方法。
【請求項３】
前記フレーム周期毎に、前記真性フレーム期間の先頭から前記リード期間が開始する第１のデータ読出と、前記真性フレーム期間の途中から前記リード期間が開始する第２〜第ｎ（ｎ：３以上の自然数）のデータ読出と、を含むｎ回の前記データ読出を行うステップと、
前記真性フレーム期間の先頭から前記第２のデータ読出の開始までの期間を第１疑似フレーム期間として計測し、第ｋ（ｋ：２≦ｋ≦（ｎ−１）の自然数）のデータ読出の開始から第（ｋ＋１）のデータ読出の開始までの期間を第ｋ疑似フレーム期間として計測し、前記第ｎのデータ読出の開始から次のフレーム周期の先頭までの期間を第ｎ疑似フレーム期間として計測し、前記第１疑似フレーム期間から前記第ｎ疑似フレーム期間までのｎ個の疑似フレーム期間を得る疑似フレーム期間計測ステップと、
をさらに含み、
前記リード期間計測ステップは、前記第ｋ疑似フレーム期間における前記データ読出の開始から完了までの期間を第ｋリード期間として計測し、前記第ｎ疑似フレーム期間における前記データ読出の開始から完了までの期間を第ｎリード期間として計測するステップを含み、
前記アイドル期間算出ステップは、前記第１疑似フレーム期間から第（ｎ−１）疑似フレーム期間までの（ｎ−１）個の前記疑似フレーム期間を加算して加算期間を算出し、前記加算期間と前記第ｎリード期間とを前記真性フレーム期間から減算して、前記第ｎ疑似フレーム期間において前記データ読出を実行しない期間を副アイドル期間として算出するステップを含み、
前記データ回復ステップは、前記副アイドル期間において前記データ回復処理を実行するステップを含む、
ことを特徴とする請求項１に記載の不揮発性メモリのデータ回復方法。
【請求項４】
フレーム周期に応じたタイミングで不揮発性メモリからデータ読出を行うメモリ制御システムにおいて、前記不揮発性メモリに記憶されているデータに対してデータ回復処理を実行するデータ回復方法であって、
前記データ読出のタイミングに同期して、第１の前記データ読出の開始から第２の前記データ読出の開始までの期間を第１疑似フレーム期間として計測し、前記第２の前記データ読出の開始から第３の前記データ読出の開始までの期間を第２疑似フレーム期間として計測する疑似フレーム期間計測ステップと、
前記第１疑似フレーム期間において前記データ読出を実行しない期間を第１アイドル期間として計測し、前記第２疑似フレーム期間において前記データ読出を実行しない期間を第２アイドル期間として計測するステップと、
前記第３の前記データ読出における読出開始から完了までの期間をリード期間として計測するリード期間計測ステップと、
前記第１疑似フレーム期間と前記第２疑似フレーム期間のうち短い方の期間から、前記リード期間を減算して減算期間を算出し、前記第１アイドル期間と前記第２アイドル期間と前記減算期間とのうち最も短い期間を、前記第２疑似フレーム期間の後の第３疑似フレーム期間において前記データ読出を実行しない第３アイドル期間として算出するアイドル期間算出ステップと、
前記第３アイドル期間において前記データ回復処理を実行するデータ回復ステップと、
を含むことを特徴とする不揮発性メモリのデータ回復方法。
【請求項５】
前記第１疑似フレーム期間及び前記第２疑似フレーム期間を加算した加算値と、第１の下限値とを比較する第１の比較ステップと、
前記第１アイドル期間及び前記第２アイドル期間と、第２の下限値とを比較する第２の比較ステップと、
を含み、
前記データ回復ステップは、前記加算値が前記第１の下限値以上であって、且つ前記第１アイドル期間及び前記第２アイドル期間がいずれも前記第２の下限値以上である場合に、前記データ回復処理を実行するステップを含む、
ことを特徴とする請求項４に記載の不揮発性メモリのデータ回復方法。
【請求項６】
フレーム周期に応じたタイミングで供給されるデータ出力要求に応じて不揮発性メモリからデータ読出を行うメモリ制御装置であって、
前記データ読出を実行するデータ読出部と、
前記フレーム周期の１周期の期間を真性フレーム期間として計測し、前記１周期における前記データ読出の開始から完了までの期間をリード期間として計測する期間計測部と、
前記真性フレーム期間において前記データ読出を実行しない期間をアイドル期間として算出する期間算出部と、
前記アイドル期間において前記データ回復処理を実行する回復処理部と、
を含むことを特徴とするメモリ制御装置。
【請求項７】
前記データ読出部は、前記真性フレーム期間の先頭から前記リード期間が開始する第１のデータ読出と、前記真性フレーム期間の途中から前記リード期間が開始する第２のデータ読出と、を含む２回の前記データ読出を行い、
前記期間計測部は、前記真性フレーム期間の先頭から前記第２のデータ読出の開始までの期間を第１疑似フレーム期間として計測し、前記第２のデータ読出の開始から次のフレーム周期の先頭までの期間を第２疑似フレーム期間として計測し、前記第１疑似フレーム期間における前記データ読出の開始から完了までの期間を第１リード期間として計測し、前記第２疑似フレーム期間における前記データ読出の開始から完了までの期間を第２リード期間として計測し、
前記期間算出部は、前記真性フレーム期間から前記第１疑似フレーム期間と前記第２リード期間とを減算して、前記第２疑似フレーム期間において前記データ読出を実行しない期間を第２アイドル期間として算出し、
前記回復処理部は、前記第２アイドル期間において前記データ回復処理を実行する、
ことを特徴とする請求項６に記載のメモリ制御装置。
【請求項８】
前記データ読出部は、前記真性フレーム期間の先頭から前記リード期間が開始する第１のデータ読出と、前記真性フレーム期間の途中から前記リード期間が開始する第２〜第ｎ（ｎ：３以上の自然数）のデータ読出と、を含むｎ回の前記データ読出を行い、
前記期間計測部は、前記真性フレーム期間の先頭から前記第２のデータ読出の開始までの期間を第１疑似フレーム期間として計測し、第ｋ（ｋ：２≦ｋ≦（ｎ−１）の自然数）のデータ読出の開始から第（ｋ＋１）のデータ読出の開始までの期間を第ｋ疑似フレーム期間として計測し、前記第ｎのデータ読出の開始から次のフレーム周期の先頭までの期間を第ｎ疑似フレーム期間として計測し、前記第ｋ疑似フレーム期間における前記データ読出の開始から完了までの期間を第ｋリード期間として計測し、前記第ｎ疑似フレーム期間における前記データ読出の開始から完了までの期間を第ｎリード期間として計測し、
前記期間算出部は、前記第１疑似フレーム期間から第（ｎ−１）疑似フレーム期間までの（ｎ−１）個の疑似フレーム期間を加算して加算期間を算出し、前記加算期間と前記第ｎリード期間とを前記真性フレーム期間から減算して、前記第ｎ疑似フレーム期間において前記データ読出を実行しない期間を第ｎアイドル期間として算出し、
前記回復処理部は、前記ｎアイドル期間において前記データ回復処理を実行する、
ことを特徴とする請求項６に記載のメモリ制御装置。
【請求項９】
フレーム周期に応じたタイミングで供給されるデータ出力要求に応じて不揮発性メモリからデータ読出を行うメモリ制御装置であって、
前記データ読出を実行するデータ読出部と、
前記データ読出のタイミングに同期して、第１の前記データ読出の開始から第２の前記データ読出の開始までの期間を第１疑似フレーム期間として計測し、前記第２の前記データ読出の開始から第３の前記データ読出の開始までの期間を第２疑似フレーム期間として計測し、前記第１疑似フレーム期間において前記データ読出を実行しない期間を第１アイドル期間として計測し、前記第２疑似フレーム期間において前記データ読出を実行しない期間を第２アイドル期間として計測し、前記第３の前記データ読出における読出開始から完了までの期間をリード期間として計測する期間計測部と、
前記第１疑似フレーム期間と前記第２疑似フレーム期間のうち短い方の期間から、前記リード期間を減算して減算期間を算出し、前記第１アイドル期間と前記第２アイドル期間と前記減算期間とのうち最も短い期間を、前記第２疑似フレーム期間の後の第３疑似フレーム期間において前記データ読出を実行しない第３アイドル期間として算出する期間算出部と、
前記第３アイドル期間において前記データ回復処理を実行する回復処理部と、
を含むことを特徴とするメモリ制御装置。
【請求項１０】
前記第１疑似フレーム期間及び前記第２疑似フレーム期間を加算した加算値と第１の下限値とを比較する第１の処理と、前記第１アイドル期間及び前記第２アイドル期間と第２の下限値とを比較する第２の比較処理と、を実行する比較処理部をさらに含み、
前記回復処理部は、前記加算値が前記第１の下限値以上であって、且つ前記第１アイドル期間及び前記第２アイドル期間がいずれも前記第２の下限値以上である場合に、前記データ回復処理を実行する、
ことを特徴とする請求項９に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリのデータ回復方法及びメモリ制御装置に関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリ等の不揮発性メモリは、近年微細化が進む一方、データ保持能力が低下している。そのため、メモリ制御装置には、データのエラー訂正処理を行うためのエラー訂正機能やデータの回復処理を行うためのデータ回復機能等が搭載されている。軽度のエラーに対してはエラー訂正処理を行い、重度のエラーに対してはデータの回復処理を行うのが一般的である。
【０００３】
データのエラーは、メモリからデータが繰り返し読み出されることにより発生する。また、データを読み出す際には読み出しの対象ページ以外の隣接する周辺ページにも電圧が印加されるため、繰り返し読み出されるアドレス以外のアドレスを含む広範囲のメモリ領域においてデータが破壊される、所謂「リードディスターブ」現象が生じる虞がある。そこで、リードディスターブ現象を防ぐため、読み出しアドレス以外の非読み出しアドレスについても広範囲にエラー検出を行うメモリコントローラが考えられた（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２６２８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データのエラーは読み出し行為により進行するため、データの出力要求が想定される状況においても、誤り検出やリフレッシュ等のデータの回復処理が必要となる場合がある。データの出力要求の発生からデータの出力までの期間は、アクセスタイム等の仕様により定められている。一方、データの回復処理には、アクセスタイムを大幅に上回る処理期間が必要となる。このため、データの回復処理は複数回の処理に分割して実行される場合が多く、処理の頻度が高い。従って、データの回復処理中にデータの出力要求が発生する場合がある。
【０００６】
データの回復処理中にデータの出力要求があった場合、アクセスタイム等の仕様に従ってデータを読み出すためには、回復処理を中断しなければならない。データの回復処理を何度も中断すると、処理の効率が悪くなるだけでなく、かえってデータの破壊を促進してしまいかねないという問題があった。また、データの出力要求よりもデータの回復処理を優先すると、仕様通りに速やかにデータの読出処理を行うことができないという問題があった。
【０００７】
上記課題を解決するため、本発明は、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能な不揮発性メモリのデータ回復方法及びメモリ制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る不揮発性メモリのデータ回復方法は、フレーム周期に応じたタイミングで不揮発性メモリからデータ読出を行うメモリ制御システムにおいて、前記不揮発性メモリに記憶されているデータに対してデータ回復処理を実行するデータ回復方法であって、前記フレーム周期の１周期の期間を真性フレーム期間として計測する真性フレーム期間計測ステップと、前記フレーム周期の１周期における前記データ読出の開始から完了までの期間をリード期間として計測するリード期間計測ステップと、前記真性フレーム期間において前記データ読出を実行しない期間をアイドル期間として算出するアイドル期間算出ステップと、前記アイドル期間において前記データ回復処理を実行するデータ回復ステップと、を含むことを特徴とする。
【０００９】
また、本発明に係る不揮発性メモリのデータ回復方法は、フレーム周期に応じたタイミングで不揮発性メモリからデータ読出を行うメモリ制御システムにおいて、前記不揮発性メモリに記憶されているデータに対してデータ回復処理を実行するデータ回復方法であって、前記データ読出のタイミングに同期して、第１の前記データ読出の開始から第２の前記データ読出の開始までの期間を第１疑似フレーム期間として計測し、前記第２の前記データ読出の開始から第３の前記データ読出の開始までの期間を第２疑似フレーム期間として計測する疑似フレーム期間計測ステップと、前記第１疑似フレーム期間において前記データ読出を実行しない期間を第１アイドル期間として計測し、前記第２疑似フレーム期間において前記データ読出を実行しない期間を第２アイドル期間として計測するステップと、前記第３の前記データ読出における読出開始から完了までの期間をリード期間として計測するリード期間計測ステップと、前記第１疑似フレーム期間と前記第２疑似フレーム期間のうち短い方の期間から、前記リード期間を減算して減算期間を算出し、前記第１アイドル期間と前記第２アイドル期間と前記減算期間とのうち最も短い期間を、前記第２疑似フレーム期間の後の第３疑似フレーム期間において前記データ読出を実行しない第３アイドル期間として算出するアイドル期間算出ステップと、前記第３アイドル期間において前記データ回復処理を実行するデータ回復ステップと、を含むことを特徴とする。
【００１０】
また、本発明に係るメモリ制御装置は、フレーム周期に応じたタイミングで供給されるデータ出力要求に応じて不揮発性メモリからデータ読出を行うメモリ制御装置であって、前記データ読出を実行するデータ読出部と、前記フレーム周期の１周期の期間を真性フレーム期間として計測し、前記１周期における前記データ読出の開始から完了までの期間をリード期間として計測する期間計測部と、前記真性フレーム期間において前記データ読出を実行しない期間をアイドル期間として算出する期間算出部と、前記アイドル期間において前記データ回復処理を実行する回復処理部と、を含むことを特徴とする。
【００１１】
また、本発明に係るメモリ制御装置は、フレーム周期に応じたタイミングで供給されるデータ出力要求に応じて不揮発性メモリからデータ読出を行うメモリ制御装置であって、前記データ読出を実行するデータ読出部と、前記データ読出のタイミングに同期して、第１の前記データ読出の開始から第２の前記データ読出の開始までの期間を第１疑似フレーム期間として計測し、前記第２の前記データ読出の開始から第３の前記データ読出の開始までの期間を第２疑似フレーム期間として計測し、前記第１疑似フレーム期間において前記データ読出を実行しない期間を第１アイドル期間として計測し、前記第２疑似フレーム期間において前記データ読出を実行しない期間を第２アイドル期間として計測し、前記第３の前記データ読出における読出開始から完了までの期間をリード期間として計測する期間計測部と、前記第１疑似フレーム期間と前記第２疑似フレーム期間のうち短い方の期間から、前記リード期間を減算して減算期間を算出し、前記第１アイドル期間及び前記第２アイドル期間及び前記減算期間のうち最も短い期間を、前記第２疑似フレーム期間の後の第３疑似フレーム期間において前記データ読出を実行しない第３アイドル期間として算出する期間算出部と、前記第３アイドル期間において前記データ回復処理を実行する回復処理部と、を含むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明に係るメモリ制御システムの構成を示すブロック図である。
【図２】実施例１におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図３】実施例１におけるメモリ制御処理のルーチンを示すフローチャートである。
【図４】フレーム期間計測処理のルーチンを示すフローチャートである。
【図５】リード期間計測処理のルーチンを示すフローチャートである。
【図６】データ回復制御処理のルーチンを示すフローチャートである。
【図７】実施例２におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図８】実施例２におけるメモリ制御処理を示すフローチャートである。
【図９】疑似フレーム期間計測処理のルーチンを示すフローチャートである。
【図１０】実施例３におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図１１】実施例３におけるメモリ制御処理のルーチンを示すフローチャートである。
【図１２】実施例４におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図１３】実施例４におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図１４】実施例４におけるメモリ制御処理のルーチンを示すフローチャートである。
【図１５】実施例５におけるメモリ制御システムの構成を示すブロック図である。
【図１６】実施例５におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図１７】実施例５におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図１８】実施例５におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。
【図１９】実施例５におけるメモリ制御処理のルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【実施例１】
【００１５】
図１は、本発明に係るメモリ制御装置（メモリ制御部１２）を含むメモリ制御システム１０の構成を示すブロック図である。メモリ制御システム１０は、ＣＰＵ（Central Processing Unit）１１、メモリ制御部１２、不揮発性の半導体メモリであるＮＡＮＤ型のフラッシュメモリ１３、ＲＡＭ（Random Access Memory）１４及びＣＰＵバス１５を含む。メモリ制御システム１０は、フラッシュメモリ１３に記憶されている画像データを、フレーム周期に応じたタイミングで周期的に読み出し、液晶表示パネル等からなる表示装置（図示せず）に画像データを供給する。
【００１６】
ＣＰＵ１１は、ＣＰＵバス１５を介してメモリ制御部１２及びＲＡＭ１４に接続されている。ＣＰＵ１１は、ＣＰＵバス１５を介してメモリ制御部１２及びＲＡＭ１４にアクセスし、フラッシュメモリ１３に対するデータの読み出し・書き込みアクセスを行う。
【００１７】
ＣＰＵ１１は、フレーム周期に応じたタイミングで、読み出し対象となるデータのアドレスとともに１〜２００回程度の複数回のデータ出力要求からなる１セットのデータ出力要求群をメモリ制御部１２に供給する。本実施例では、ＣＰＵ１１は、１フレーム周期毎に１回ずつ、フレーム周期の先頭に合わせて、データの出力要求群をメモリ制御部１２に供給する。
【００１８】
メモリ制御部１２は、データ読出部２１、期間計測部２２、期間算出部２３及び回復処理部２４を含む。
【００１９】
データ読出部２１は、ＣＰＵ１１からのデータ出力要求に応じて、フラッシュメモリ１３から画像データを出力する（データ出力処理）。すなわち、データ読出部２１は、データ出力要求群に含まれるデータ出力要求の各々に対応する１〜２００回程度の複数回のデータ出力処理を実行する。以下、１セットのデータ出力要求群に対応するデータ出力処理群を、まとめて「データ読出処理」と称する。本実施例では、１フレーム周期毎に１回（１セット）ずつＣＰＵ１１からデータ出力要求群が供給されるため、データ読出部２１は、１フレーム周期につき１回のデータ読出処理（すなわち、１セットのデータ出力処理群）を実行する。データ読出部２１は、フレーム周期の各周期の先頭からデータ読出処理を行う。
【００２０】
期間計測部２２は、フレーム周期の１周期毎の期間を真性フレーム期間Ａとして計測する。以下の説明では、複数の真性フレーム期間Ａを区別する場合、先頭から順に番号を付して真性フレーム期間Ａ１，Ａ２，Ａ３・・・とも称する。なお、各真性フレーム期間Ａ（Ａ１，Ａ２，Ａ３・・・）の長さは等しい。
【００２１】
また、期間計測部２２は、データ読出部２１がデータ読出処理を開始してから完了するまでの期間をリード期間Ｃｍとして計測する。具体的には、期間計測部２２は、ＣＰＵ１１からメモリ制御部１２にデータ出力要求の供給が開始された後、データ出力要求が途絶えてから１ｍｓ後までの期間をリード期間Ｃｍとして計測する。すなわち、リード期間Ｃｍは、１セットのデータ出力要求群のうちの最初のデータ出力要求の供給開始から最後のデータ出力要求が途絶えて１ｍｓ後までの期間として計測される。以下、真性フレーム期間Ａ及びリード期間Ｃｍの計測に係る処理を期間計測処理とも称する。
【００２２】
期間算出部２３は、真性フレーム期間Ａにおいてデータ読出処理を実行しない期間をアイドル期間Ｄｍとして算出する期間算出処理を実行する。具体的には、期間算出部２３は、真性フレーム期間Ａからリード期間Ｃｍを減算することにより、ＣＰＵ１１からのデータ出力要求がない期間をアイドル期間Ｄｍとして算出する。
【００２３】
回復処理部２４は、フラッシュメモリ１３に記憶されているデータに対して、データ回復処理を実行する。データ回復処理は、例えばフラッシュメモリ１３内のデータに生じているデータの誤りを検出するための誤り検出処理、監視処理や、リフレッシュ処理等を含む。回復処理部２４は、かかるデータ回復処理を複数の回復処理期間Ｆｍ（ｍ＝１，２，３・・・）に分割して実行する。また、回復処理部２４は、データ回復処理の実行に際して、回復処理期間Ｆｍの設定等を含む後述するデータ回復制御処理を実行する。以下の説明では、期間計測処理、期間算出処理及びデータ回復制御処理からなる一連の処理を、まとめてメモリ制御処理とも称する。
【００２４】
図２は、本実施例におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。真性フレーム期間Ａ１が先頭のフレーム期間であり、時間軸（Ｔ）に沿って矢印の方向に２番目の真性フレーム期間Ａ２、３番目の真性フレーム期間Ａ３、４番目の真性フレーム期間Ａ４が続いている。上記の通り、真性フレーム期間Ａ毎に１回ずつデータ読出処理が実行されるため、各真性フレーム期間Ａには、１回ずつリード期間Ｃｍ及びアイドル期間Ｄｍが存在する。なお、上記の通り各真性フレーム期間Ａ（Ａ１，Ａ２，Ａ３，Ａ４）の長さは等しいが、各リード期間Ｃｍの長さは読み出し対象となるデータのサイズ等に応じて異なる。
【００２５】
図３は、メモリ制御部１２が行うメモリ制御処理のルーチンを示すフローチャートである。メモリ制御部１２は、まず処理対象の真性フレーム期間Ａｍとして先頭の真性フレーム期間である真性フレーム期間Ａ１（すなわち、ｍ＝１）をセットする（ステップＳ１）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ２）。データ出力要求が供給されていると判定すると、メモリ制御部１２の期間計測部２２は、フレーム期間計測処理を実行する（ステップＳ３）。
【００２６】
図４は、フレーム期間計測処理のルーチンを示すフローチャートである。このフレーム期間計測処理は、先頭の真性フレーム期間Ａ１における真性フレーム期間Ａの長さを計測する処理である。なお、上記のとおり各真性フレーム期間Ａの長さは等しいため、先頭の真性フレーム期間Ａ１を計測することにより、２番目以降の真性フレーム期間Ａ２，Ａ３，Ａ４・・・の長さを得ることができる。
【００２７】
期間計測部２２は、リード期間Ｃ１が開始した後（ステップＳ１１）、データ出力要求が途絶えてから１ｍｓが経過したか否かを判定する（ステップＳ１２）。経過したと判定すると、リード期間Ｃ１が終了したと判定する。リード期間Ｃ１が終了すると、アイドル期間Ｄ１が開始する（ステップＳ１３）。
【００２８】
メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ１４）。データ出力要求が供給されたと判定すると、アイドル期間Ｄ１が終了したと判定する。これにより、リード期間Ｃ１の開始からアイドル期間Ｄ１の終了までを真性フレーム期間Ａ１として計測し、真性フレーム期間の計測処理を終了する（ステップＳ１５）。メモリ制御部１２は、真性フレーム期間Ａｍの番号ｍを１だけインクリメントする（ステップＳ１６）。
【００２９】
再び図３を参照すると、メモリ制御部１２の期間計測部２２は、フレーム期間計測処理の後、リード期間計測処理を実行する（ステップＳ４）。
【００３０】
図５は、リード期間計測処理のルーチンを示すフローチャートである。このリード期間計測処理は、先頭の真性フレーム期間Ａ１に続く２番目以降の真性フレーム期間（Ａ２，Ａ３，Ａ４・・・）におけるリード期間Ｃｍ（ｍ＝２，３，４・・・）を計測する処理である。
【００３１】
期間計測部２２は、リード期間Ｃｍの計測を開始した後（ステップＳ１７）、データ出力要求が途絶えてから１ｍｓが経過したか否かを判定する（ステップＳ１８）。経過したと判定すると、リード期間Ｃｍが終了したと判定して、リード期間計測処理を終了する（ステップＳ１９）。
【００３２】
再び図３を参照すると、メモリ制御部１２は、リード期間計測処理の実行後、データ回復制御処理に移行する（ステップＳ５）。
【００３３】
図６は、データ回復制御処理のルーチンを示すフローチャートである。メモリ制御部１２は、先頭から２番目以降の真性フレーム期間Ａ（Ａ２，Ａ３，Ａ４・・・）においてデータの回復を行うためのデータの回復処理期間Ｆｍ（ｍ＝２，３，４・・・）を設定する（ステップＳ２０）。期間算出部２３は、ステップＳ３において計測した真性フレーム期間Ａからリード期間Ｃｍを減算することにより、アイドル期間Ｄｍ（ｍ＝２，３，４・・・）を算出する（ステップＳ２１）。例えば、図２に示すように、アイドル期間Ｄ２及びＤ３は、夫々Ｄ２＝Ａ−Ｃ２、Ｄ３＝Ａ−Ｃ３として算出される。
【００３４】
再び図６を参照すると、メモリ制御部１２は、設定したデータの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まるか、すなわちアイドル期間Ｄｍにおいてデータの回復を行うことが可能か否かを判定する（ステップＳ２２）。データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まらない、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができないと判定すると、メモリ制御部１２は、データ回復制御処理を終了する（ステップＳ２３）。一方、データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まっている、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができると判定すると、当該回復処理期間Ｆｍにおいてデータの回復処理を実行する（ステップＳ２４）。
【００３５】
再び図３を参照すると、メモリ制御部１２は、先頭の真性フレーム期間Ａ１以外の全ての真性フレーム期間（Ａ２、Ａ３，Ａ４・・・）においてデータ回復制御処理が完了したか否かを判定する（ステップＳ６）。データ回復制御処理が完了したと判定すると、メモリ制御処理を終了する。一方、データ回復制御処理が完了していないと判定すると、メモリ制御部１２は、真性フレーム期間Ａｍの番号ｍを１だけインクリメントする（ステップＳ７）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ８）。出力要求が供給されていると判定すると、ステップＳ４に戻り、リード期間計測処理を実行する（ステップＳ４）。
【００３６】
以上のように、本実施例のメモリ制御部１２は、真性フレーム期間及びリード期間を計測して、アイドル期間を算出する。そして、回復処理期間を設定し、回復処理期間がアイドル期間に収まる場合にのみ、データ回復処理を実行する。アイドル期間に収まるように回復処理期間を設定してデータ回復処理を実行することにより、データ読出処理による中断を経ることなく、データ回復処理を行うことができる。従って、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能となる。
【実施例２】
【００３７】
実施例２のメモリ制御システム１０は、図１に示すように、ＣＰＵ１１、メモリ制御部１２、不揮発性の半導体メモリであるＮＡＮＤ型のフラッシュメモリ１３、ＲＡＭ１４及びＣＰＵバス１５を含む。
【００３８】
ＣＰＵ１１は、実施例１とは異なり、１フレーム周期毎に２回（２セット）ずつ、データ出力要求群をメモリ制御部１２に供給する。具体的には、ＣＰＵ１１は、真性フレーム期間Ａの先頭のタイミングで第１のデータ出力要求群、真性フレーム期間Ａの途中のタイミングで第２のデータ出力要求群をメモリ制御部１２に供給する。
【００３９】
メモリ制御部１２は、データ読出部２１、期間計測部２２、期間算出部２３及び回復処理部２４を含む。
【００４０】
データ読出部２１は、ＣＰＵ１１からのデータ出力要求に応じて、データ読出処理を実行する。本実施例では、１フレーム周期毎に２回（２セット）ずつＣＰＵ１１からデータ出力要求群が供給されるため、データ読出部２１は、１フレーム周期につき２回のデータ読出処理（すなわち、２セットのデータ出力処理群）を実行する。具体的には、データ読出部２１は、真性フレーム期間Ａの先頭から第１のデータ読出処理を行い、真性フレーム期間Ａの途中から第２のデータ読出処理を行う。
【００４１】
期間計測部２２は、真性フレーム期間Ａの先頭から第２のデータ読出処理の開始までの期間を第１疑似フレーム期間として計測し、第２のデータ読出処理の開始から次のフレーム周期の先頭までの期間を第２疑似フレーム期間として計測する。各真性フレーム期間Ａにおける第１疑似フレーム期間及び第２疑似フレーム期間を総称して単に疑似フレーム期間Ｂｍ（ｍ＝１，２，３・・・）と称する。
【００４２】
期間計測部２２は、リード期間Ｃｍの開始からアイドル期間Ｄｍの終了までの期間として疑似フレーム期間Ｂｍを計測する。上記の通り、本実施例では１フレーム周期につき２回のデータ読出処理（２セットのデータ出力処理群）が実行されるため、真性フレーム期間Ａは、２回のデータ読出処理に対応する２つの疑似フレーム期間Ｂｍを含む。また、期間計測部２２は、実施例１と同様、リード期間Ｃｍについての期間計測処理を行う。
【００４３】
期間算出部２３は、真性フレーム期間Ａ、疑似フレーム期間Ｂｍ及びリード期間Ｃｍに基づいて、アイドル期間Ｄｍを算出する。具体的には、期間算出部２３は、真性フレーム期間Ａから第１疑似フレーム期間（例えば、Ｂ１）と第２疑似フレーム期間におけるリード期間（例えば、Ｃ２）とを減算してアイドル期間（例えば、Ｄ２）を算出する。この第２疑似フレーム期間におけるアイドル期間を、特に副アイドル期間と称する。
【００４４】
回復処理部２４は、期間算出部２３により算出された副アイドル期間において、フラッシュメモリ１３内のメモリ領域に保持されたデータの回復処理を制御するデータ回復制御処理を行う。
【００４５】
図７は、本実施例におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。上記の通り、真性フレーム期間Ａ毎に２回ずつデータ読出処理が実行されるため、真性フレーム期間Ａは、リード期間Ｃｍ及びアイドル期間Ｄｍからなる２個の疑似フレーム期間Ｂｍを含む。例えば、真性フレーム期間Ａ１は疑似フレーム期間Ｂ１及びＢ２を含み、真性フレーム期間Ａ２は疑似フレーム期間Ｂ３及びＢ４を含む。
【００４６】
実施例１と同様、各真性フレーム期間Ａの長さは等しい。これに対し、疑似フレーム期間Ｂｍ、リード期間Ｃｍ及びアイドル期間Ｄｍの長さは、読み出し対象となるデータのサイズ等に応じて異なる。
【００４７】
図８は、メモリ制御部１２が行うメモリ制御処理のルーチンを示すフローチャートである。メモリ制御部１２は、まず処理対象の疑似フレーム期間Ｂｍとして先頭の疑似フレーム期間である疑似フレーム期間Ｂ１（すなわち、ｍ＝１）をセットする（ステップＳ３１）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ３２）。データ出力要求が供給されていると判定すると、メモリ制御部１２の期間計測部２２は、疑似フレーム期間計測処理を実行する（ステップＳ３３）。
【００４８】
図９は、疑似フレーム期間計測処理のルーチンを示すフローチャートである。この疑似フレーム期間計測処理は、疑似フレーム期間Ｂｍを計測する処理である。
【００４９】
期間計測部２２は、リード期間Ｃ１が開始した後（ステップＳ４２）、データ出力要求が途絶えてから１ｍｓが経過したか否かを判定する（ステップＳ４３）。経過したと判定すると、リード期間Ｃ１が終了したと判定する。これにより、リード期間Ｃ１が計測される。リード期間Ｃ１が終了すると、アイドル期間Ｄ１が開始する（ステップＳ４４）。
【００５０】
メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ４５）。データ出力要求が供給されたと判定すると、アイドル期間Ｄ１が終了したと判定する。これにより、アイドル期間Ｄ１が計測される。期間計測部２２は、リード期間Ｃ１の開始からアイドル期間Ｄ１の終了までを疑似フレーム期間Ｂ１として計測し、疑似フレーム期間計測処理を終了する。メモリ制御部１２は、疑似フレーム期間Ｂｍの番号ｍを１だけインクリメントする（ステップＳ４７）。
【００５１】
再び図８を参照すると、メモリ制御部１２は、疑似フレーム期間Ｂｍを２回計測したか否かを判定する（ステップＳ３４）。２回計測していないと判定すると、期間計測部２２は、ステップＳ３３に戻り、再び疑似フレーム期間計測処理を実行する。一方、２回計測したと判定すると、期間算出部２３は、計測した２つの疑似フレーム期間（Ｂ１とＢ２）を加算することにより、真性フレーム期間Ａを算出する（ステップＳ３５）。
【００５２】
メモリ制御部１２は、計測済みの疑似フレーム期間の直後の疑似フレーム期間Ｂｍについて、疑似フレーム期間計測処理を実行する（ステップＳ３６）。例えば、疑似フレーム期間Ｂ１及びＢ２を計測した直後において、疑似フレーム期間Ｂ３を計測する。なお、疑似フレーム期間計測処理の詳細については、ステップＳ３３の処理と同様であるため、ここでは説明を省略する。
【００５３】
続いて、メモリ制御部１２の期間計測部２２は、ステップＳ３６において計測した疑似フレーム期間の直後のリード期間Ｃｍについて、リード期間計測処理を実行する（ステップＳ３７）。例えば、ステップＳ３６において疑似フレーム期間Ｂ３を計測した場合、その直後のリード期間Ｃ４を計測する。なお、リード期間計測処理の詳細は、実施例１において図５を参照して説明した処理と同様であるため、ここでは説明を省略する。
【００５４】
メモリ制御部１２は、リード期間計測処理の実行後、データ回復制御処理に移行する（ステップＳ３８）。本実施例におけるデータ回復制御処理は、基本的な処理の流れについては実施例１において図６のフローチャートで示したデータ回復制御処理と同様であるが、アイドル期間算出ステップ（ステップＳ２１）の処理動作において、実施例１と異なる。
【００５５】
メモリ制御部１２は、ステップＳ３６において計測した疑似フレーム期間の直後の疑似フレーム期間Ｂｍにおいて、データの回復を行うためのデータの回復処理期間Ｆｍを設定する（ステップＳ２０）。例えば、ステップＳ３６において疑似フレーム期間Ｂ３を計測した場合、その直後のリード期間Ｃ４において、データの回復処理期間Ｆ４を設定する。ステップＳ３６において疑似フレーム期間Ｂ５を計測した場合、その直後のリード期間Ｃ６において、データの回復処理期間Ｆ６を設定する。
【００５６】
メモリ制御部１２の期間算出部２３は、ステップＳ３５において計測した真性フレーム期間Ａから、ステップＳ３７において計測したリード期間Ｃｍ及びその直前の疑似フレーム期間Ｂ（ｍ−１）を減算することにより、副アイドル期間であるアイドル期間Ｄｍを算出する（ステップＳ２１）。例えば、ステップＳ３７においてリード期間Ｃ４を計測した場合、図７に示すように、真性フレーム期間Ａから疑似フレーム期間Ｂ３及びリード期間Ｃ４を減算し、アイドル期間Ｄ４を副アイドル期間として算出する。ステップＳ３７においてリード期間Ｃ６を計測した場合、真性フレーム期間Ａから疑似フレーム期間Ｂ５及びリード期間Ｃ６を減算し、アイドル期間Ｄ６を副アイドル期間として算出する。
【００５７】
再び図６を参照すると、メモリ制御部１２は、設定したデータの回復処理期間Ｆｍが副アイドル期間であるアイドル期間Ｄｍの範囲に収まるか、すなわち当該副アイドル期間においてデータの回復を行うことが可能か否かを判定する（ステップＳ２２）。データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まらない、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができないと判定すると、メモリ制御部１２は、データ回復制御処理を終了する（ステップＳ２３）。一方、データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まっている、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができると判定すると、当該回復処理期間Ｆｍにおいてデータの回復処理を実行する（ステップＳ２４）。
【００５８】
再び図８を参照すると、メモリ制御部１２は、全ての疑似フレーム期間についてデータ回復制御処理が完了したか否かを判定する（ステップＳ３９）。データ回復制御処理が完了したと判定すると、メモリ制御処理を終了する。一方、データ回復制御処理が完了していないと判定すると、メモリ制御部１２は、疑似フレーム期間Ｂｍの番号ｍをインクリメントする（ステップＳ４０）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ４１）。出力要求が供給されていると判定すると、ステップＳ３６に戻り、疑似フレーム期間計測処理を実行する。
【００５９】
このように、ステップＳ３９〜Ｓ４１を経て、ステップＳ３６〜Ｓ３８の処理を繰り返し実行することにより、先頭の真性フレーム期間Ａ１以降の全ての真性フレーム期間（Ａ２，Ａ３，Ａ４・・・）において回復処理期間Ｆｍが設定され、回復処理期間Ｆｍがアイドル期間Ｄｍの範囲内に収まっている場合には、データの回復処理が実行される。
【００６０】
以上のように、本実施例のメモリ制御部１２は、真性フレーム期間内にリード期間及びアイドル期間（すなわち、疑似フレーム期間）が２回ずつ存在する場合に、当該真性フレーム期間内の１回目の疑似フレーム期間（例えば、Ｂ３，Ｂ５，Ｂ７・・・）及び２回目のリード期間（例えば、Ｃ４、Ｃ６，Ｃ８・・・）を計測して、２回目のアイドル期間（例えば、Ｄ４，Ｄ６，Ｄ８・・・）を算出する。そして、回復処理期間がアイドル期間に収まる場合にのみ、データの回復処理を実行する。アイドル期間内に収まるように回復処理期間を設定することにより、データ読出処理による中断を経ることなく、データの回復処理を行うことができる。従って、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能となる。
【実施例３】
【００６１】
実施例３のメモリ制御システム１０は、図１に示すように、ＣＰＵ１１、メモリ制御部１２、不揮発性の半導体メモリであるＮＡＮＤ型のフラッシュメモリ１３、ＲＡＭ１４及びＣＰＵバス１５を含む。
【００６２】
ＣＰＵ１１は、実施例１及び実施例２とは異なり、１フレーム周期毎にｎ回（ｎ：自然数）ずつ、データ出力要求群をメモリ制御部１２に供給する。具体的には、ＣＰＵ１１は、真性フレーム期間Ａの先頭のタイミングで第１データ出力要求群、真性フレーム期間Ａの途中のタイミングで第２データ出力要求群〜第ｎデータ出力要求群を順次メモリ制御部１２に供給する。
【００６３】
データ読出部２１は、ＣＰＵ１１からのデータの出力要求に応じて、１フレーム周期につきｎ回のデータ読出処理（すなわち、ｎセットのデータ出力処理群）を実行する。具体的には、データ読出部２１は、真性フレーム期間Ａの先頭から第１データ読出処理を実行し、真性フレーム期間Ａの途中から第２データ読出処理〜第ｎデータ読出処理を実行する。
【００６４】
期間計測部２２は、真性フレーム期間Ａの先頭から第２データ読出処理の開始までの期間を第１疑似フレーム期間として計測し、第ｋ（ｋ：２≦ｋ≦（ｎ−１）の自然数）データ読出処理の開始から第（ｋ＋１）データ読出処理の開始までの期間を第ｋ疑似フレーム期間として計測し、第ｎデータ読出処理の開始から次のフレーム周期の先頭までの期間を第ｎ疑似フレーム期間として計測する。各真性フレーム期間Ａにおける第１〜第ｎ疑似フレーム期間を総称して単に疑似フレーム期間Ｂｍ（ｍ＝１，２，３・・・）と称する。上記の通り、本実施例では１フレーム周期につきｎ回のデータ読出処理が行われるため、真性フレーム期間Ａは、ｎ回のデータ読出処理に対応するｎ個の疑似フレーム期間Ｂｍを含む。
【００６５】
期間算出部２３は、真性フレーム期間Ａから第１〜第（ｎ−１）疑似フレーム期間（例えば、Ｂ１〜Ｂ（ｎ−１））を加算した加算期間と第ｎ疑似フレーム期間におけるリード期間（例えば、Ｃｎ）とを減算してアイドル期間（例えば、Ｄｎ）を算出する。この第ｎ疑似フレーム期間におけるアイドル期間を、特に副アイドル期間と称する。
【００６６】
図１０は、本実施例におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。上記の通り、真性フレーム期間Ａ毎にｎ回ずつデータ読出処理が実行されるため、真性フレーム期間Ａは、リード期間Ｃｍ及びアイドル期間Ｄｍからなるｎ個の疑似フレーム期間Ｂｍを含む。例えば、真性フレーム期間Ａ１は疑似フレーム期間Ｂ１〜Ｂｎを含み、真性フレーム期間Ａ２は疑似フレーム期間Ｂ（ｎ＋１）〜Ｂ（２ｎ）を含む。
【００６７】
図１１は、メモリ制御部１２が行うメモリ制御処理のルーチンを示すフローチャートである。メモリ制御部１２は、まず処理対象の疑似フレーム期間Ｂｍとして先頭の疑似フレーム期間である疑似フレーム期間Ｂ１（すなわち、ｍ＝１）をセットする（ステップＳ５１）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ５２）。データ出力要求が供給されていると判定すると、メモリ制御部１２の期間計測部２２は、疑似フレーム期間計測処理を実行する（ステップＳ５３）。この疑似フレーム期間計測処理については、実施例２において図９を参照して説明した処理と同様であるため、ここでは説明を省略する。
【００６８】
メモリ制御部１２は、疑似フレーム期間Ｂｍをｎ回計測したか否かを判定する（ステップＳ５４）。ｎ回計測していないと判定すると、期間計測部２２は、ステップＳ５３に戻り、再び疑似フレーム期間計測処理を実行する。一方、ｎ回計測したと判定すると、期間算出部２３は、計測したｎ個の疑似フレーム期間Ｂ１〜Ｂｎを加算することにより、真性フレーム期間Ａを算出する（ステップＳ５５）。
【００６９】
メモリ制御部１２は、計測済みのｎ個の疑似フレーム期間（例えば、Ｂ１〜Ｂｎ）の後の疑似フレーム期間Ｂｍ（例えば、Ｂ（ｎ＋１），Ｂ（ｎ＋２），・・・）について、疑似フレーム期間計測処理を実行する（ステップＳ５６）。この疑似フレーム期間計測処理については、ステップＳ５３の処理と同様であるため、ここでは説明を省略する。
【００７０】
メモリ制御部１２は、疑似フレーム期間Ｂｍを（ｎ−１）回計測したか否かを判定する（ステップＳ５７）。（ｎ−１）回計測していないと判定すると、期間計測部２２は、ステップＳ５６に戻り、再び疑似フレーム期間計測処理を実行する。
【００７１】
続いて、メモリ制御部１２の期間計測部２２は、ステップＳ５６〜Ｓ５７において（ｎ−１）回目に計測した疑似フレーム期間Ｂｍ（例えば、Ｂ（２ｎ−１））の直後のリード期間Ｃｍ（例えば、Ｃ（２ｎ））について、リード期間計測処理を実行する（ステップＳ５８）。このリード期間計測処理は、実施例１において図５を参照して説明した処理と同様であるため、ここでは説明を省略する。
【００７２】
メモリ制御部１２は、リード期間計測処理の実行後、データ回復制御処理に移行する（ステップＳ５９）。本実施例におけるデータ回復制御処理は、基本的な処理の流れについては実施例１において図６のフローチャートで示したデータ回復制御処理と同様であるが、アイドル期間算出ステップ（ステップＳ２１）の処理動作において、実施例１と異なる。
【００７３】
メモリ制御部１２は、ステップＳ５６〜Ｓ５７において（ｎ−１）回目に計測した疑似フレーム期間の直後の疑似フレーム期間Ｂｍにおいて、データの回復を行うためのデータの回復処理期間Ｆｍを設定する（ステップＳ２０）。例えば、ステップＳ５６〜Ｓ５７において疑似フレーム期間Ｂ（２ｎ−１）を計測した場合、その直後の疑似フレーム期間Ｂ（２ｎ）において、データの回復処理期間Ｆ（２ｎ）を設定する。
【００７４】
メモリ制御部１２の期間算出部２３は、ステップＳ５５において計測した真性フレーム期間Ａから、ステップＳ５６〜Ｓ５７において計測した（ｎ−１）個の疑似フレーム期間Ｂｍの加算値及びステップＳ５８において計測したリード期間Ｃｍを減算することにより、副アイドル期間であるアイドル期間Ｄｍを算出する（ステップＳ２１）。例えば、ステップＳ５６〜Ｓ５７において疑似フレーム期間Ｂ（ｎ＋１）〜Ｂ（２ｎ−１）を計測し、ステップＳ５８においてＣ（２ｎ）を計測した場合、ＡからＢ（ｎ＋１）〜Ｂ（２ｎ−１）の加算値及びＣ（２ｎ）を減算することにより、アイドル期間Ｄ（２ｎ）を副アイドル期間として算出する。すなわち、アイドル期間Ｄ（２ｎ）は、以下の式（１）で表される。
【数１】
0006479617.tif 000002
また、ステップＳ５６〜Ｓ５７において疑似フレーム期間Ｂ（２ｎ＋１）〜Ｂ（３ｎ−１）を計測し、ステップＳ５８においてＣ（３ｎ）を計測した場合、ＡからＢ（２ｎ＋１）〜Ｂ（３ｎ−１）の加算値及びＣ（３ｎ）を減算することにより、アイドル期間Ｄ（３ｎ）を副アイドル期間として算出する。すなわち、アイドル期間Ｄ（３ｎ）は、以下の式（２）で表される。
【数２】
0006479617.tif 000003
メモリ制御部１２は、設定したデータの回復処理期間Ｆｍが副アイドル期間であるアイドル期間Ｄｍの範囲に収まるか、すなわち当該副アイドル期間においてデータの回復を行うことが可能か否かを判定する（ステップＳ２２）。データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まらない、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができないと判定すると、メモリ制御部１２は、データ回復制御処理を終了する（ステップＳ２３）。一方、データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まっている、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができると判定すると、当該回復処理期間Ｆｍにおいてデータの回復処理を実行する（ステップＳ２４）。
【００７５】
再び図１１を参照すると、メモリ制御部１２は、全ての疑似フレーム期間についてデータ回復制御処理が完了したか否かを判定する（ステップＳ６０）。データ回復制御処理が完了したと判定すると、メモリ制御処理を終了する。一方、データ回復制御処理が完了していないと判定すると、メモリ制御部１２は、疑似フレーム期間Ｂｍの番号ｍをインクリメントする（ステップＳ６１）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ６２）。出力要求が供給されていると判定すると、ステップＳ５６に戻り、疑似フレーム期間計測処理を実行する。
【００７６】
このように、ステップＳ６０〜Ｓ６２を経て、ステップＳ５６〜Ｓ５９の処理を繰り返し実行することにより、先頭の真性フレーム期間Ａ１以降の全ての真性フレーム期間（Ａ２，Ａ３，Ａ４・・・）において回復処理期間Ｆｍが設定され、回復処理期間Ｆｍがアイドル期間Ｄｍの範囲内に収まっている場合には、データの回復処理が実行される。
【００７７】
以上のように、本実施例のメモリ制御部１２は、真性フレーム期間内にリード期間及びアイドル期間（疑似フレーム期間）がｎ回ずつ存在する場合に、同一の真性フレーム期間内における先頭から（ｎ−１）個の疑似フレーム期間（例えば、Ｂ（ｎ＋１）〜Ｂ（２ｎ−１））及びその直後のリード期間（例えば、Ｃ（２ｎ））の長さを計測して、これらを真性フレーム期間の長さＡから減算することにより、アイドル期間（例えば、Ｄ（２ｎ））を算出する。そして、回復処理期間を設定し、回復処理期間がアイドル期間に収まる場合にのみ、データの回復処理を実行する。アイドル期間内に収まるように回復処理期間を設定することにより、データ読出処理による中断を経ることなく、データの回復処理を行うことができる。従って、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能となる。
【実施例４】
【００７８】
実施例４のメモリ制御システム１０は、図１に示すように、ＣＰＵ１１、メモリ制御部１２、不揮発性の半導体メモリであるＮＡＮＤ型のフラッシュメモリ１３、ＲＡＭ１４及びＣＰＵバス１５を含む。
【００７９】
本実施例において、ＣＰＵ１１は、１フレーム周期毎に１回又は２回（すなわち、１セット又は２セット）ずつ、データ出力要求群をメモリ制御部１２に供給する。フレーム周期毎のデータ出力要求群の回数が１回である場合、実施例１と同様に、ＣＰＵ１１は、フレーム周期の先頭に合わせてデータ出力要求群をメモリ制御部１２に供給する。一方、フレーム周期毎のデータ出力要求群の回数が２回である場合、ＣＰＵ１１は、実施例２と同様、真性フレーム期間Ａの先頭のタイミングで第１データ出力要求群、真性フレーム期間Ａの途中のタイミングで第２のデータ出力要求群をメモリ制御部１２に供給する。
【００８０】
データ読出部２１は、ＣＰＵ１１からのデータ出力要求群に応じて、１フレーム周期につき１回又は２回のデータ読出処理（すなわち、１セット又は２セットのデータ出力処理群）を実行する。フレーム周期毎のデータ読出の回数が１回である場合、データ読出部２１は、実施例１と同様、フレーム周期の各周期の先頭からデータ読出処理を行う。一方、フレーム周期毎のデータ読出の回数が２回である場合、データ読出部２１は、真性フレーム期間Ａの先頭から第１のデータ読出処理を行い、真性フレーム期間Ａの途中から第２のデータ読出処理を行う。
【００８１】
期間計測部２２は、データ読出の開始から次のデータ読出の開始までの期間を夫々疑似フレーム期間Ｂｍとして計測する。すなわち、期間計測部２２は、データ読出処理の開始のタイミングに同期した期間を疑似フレーム期間Ｂｍ（ｍ＝１，２，３・・・）として計測する。上記の通り、本実施例では１フレーム周期につき１回又は２回のデータ読出処理が行われるため、真性フレーム期間Ａは、１又は２個の疑似フレーム期間Ｂｍを含む。
【００８２】
図１２及び図１３は、本実施例におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。図１２は、真性フレーム期間Ａにおいてデータ読出処理が２回（データ出力処理群が２セット）行われる場合、すなわち真性フレーム期間Ａが２つの疑似フレーム期間Ｂｍを含む場合の例を示す図である。これに対し、図１３は、真性フレーム期間Ａにおいてデータ読出処理が１回（データ出力処理群が１セット）行われる場合、すなわち真性フレーム期間Ａが１つの疑似フレーム期間Ｂｍを含む場合の例を示す図である。
【００８３】
図１４は、メモリ制御部１２が行うメモリ制御処理のルーチンを示すフローチャートである。メモリ制御部１２は、まず処理対象の疑似フレーム期間Ｂｍとして先頭の疑似フレーム期間である疑似フレーム期間Ｂ１（すなわち、ｍ＝１）をセットする（ステップＳ７１）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ７２）。データ出力要求が供給されていると判定すると、メモリ制御部１２の期間計測部２２は、疑似フレーム期間計測処理を実行する（ステップＳ７３）。この疑似フレーム期間計測処理については、実施例２において図９を参照して説明した処理と同様であるため、ここでは説明を省略する。
【００８４】
メモリ制御部１２は、疑似フレーム期間Ｂｍを２回計測したか否かを判定する（ステップＳ７４）。２回計測していないと判定すると、期間計測部２２は、ステップＳ７３に戻り、再び疑似フレーム期間計測処理を実行する。
【００８５】
一方、２回計測したと判定すると、期間計測部２２は、ステップＳ７３〜Ｓ７４において計測した２個の疑似フレーム期間Ｂｍの直後のリード期間Ｃｍについて、リード期間計測処理を実行する（ステップＳ７５）。例えば、ステップＳ７３〜７４において疑似フレーム期間Ｂ１及びＢ２を計測した場合、その直後のリード期間Ｃ３を計測する。なお、リード期間計測処理の詳細は、実施例１において図５を参照して説明した処理と同様であるため、ここでは説明を省略する。
【００８６】
メモリ制御部１２は、リード期間計測処理の実行後、データ回復制御処理に移行する（ステップＳ７６）。本実施例におけるデータ回復制御処理は、基本的な処理の流れについては実施例１において図６のフローチャートを参照して説明したデータ回復制御処理と同様であるが、アイドル期間算出ステップ（ステップＳ２１）の処理動作において、実施例１と異なる。
【００８７】
メモリ制御部１２は、ステップＳ７３〜Ｓ７４において計測した２個の疑似フレーム期間の直後の疑似フレーム期間Ｂｍにおいて、データの回復を行うためのデータの回復処理期間Ｆｍを設定する（ステップＳ２０）。例えば、ステップＳ７３〜Ｓ７４において疑似フレーム期間Ｂ１，Ｂ２を計測した場合、その直後の疑似フレーム期間Ｂ３において、データの回復処理期間Ｆ３を設定する。ステップＳ７３〜Ｓ７４において疑似フレーム期間Ｂ４，Ｂ５を計測した場合、その直後の疑似フレーム期間Ｂ６において、データの回復処理期間Ｆ６を設定する。
【００８８】
メモリ制御部１２の期間算出部２３は、ステップＳ７３〜Ｓ７４において計測した２個の疑似フレーム期間（例えば、Ｂ１、Ｂ２）のうち、短い方の疑似フレーム期間からステップＳ７５で計測したリード期間（例えば、Ｃ３）を減算する。期間算出部２３は、かかる減算期間（例えば、Ｂ２−Ｃ３）を、ステップＳ７３〜７４において計測した２個の疑似フレーム期間におけるアイドル期間（例えば、Ｄ１，Ｄ２）と比較し、３者のうちで最も短い期間をアイドル期間Ｄｍとして算出する（ステップＳ２１）。
【００８９】
例えば、図１２のタイムチャートでは、疑似フレーム期間Ｂ２の方が疑似フレーム期間Ｂ１よりも短い。従って、期間算出部２３は、疑似フレーム期間Ｂ２からリード期間Ｃ３を減算する。期間算出部２３は、アイドル期間Ｄ１，Ｄ２及び（Ｂ２−Ｃ３）を比較し、３者のうちで最も短い（Ｂ２−Ｃ３）又はＤ２をアイドル期間Ｄｍとして算出する。
【００９０】
これに対し、図１３のタイムチャートでは、疑似フレーム期間Ｂ１と疑似フレーム期間Ｂ２とが同じ長さであるため、期間算出部２３は、疑似フレーム期間Ｂ１からリード期間Ｃ３を減算する。期間算出部２３は、アイドル期間Ｄ１，Ｄ２及び（Ｂ１−Ｃ３）を比較し、３者のうちで最も短い（Ｂ１−Ｃ３）をアイドル期間Ｄｍとして算出する。
【００９１】
再び図６を参照すると、メモリ制御部１２は、設定したデータの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まるか、すなわちアイドル期間Ｄｍにおいてデータの回復を行うことが可能か否かを判定する（ステップＳ２２）。データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まらない、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができないと判定すると、メモリ制御部１２は、データ回復制御処理を終了する（ステップＳ２３）。一方、データの回復処理期間Ｆｍがアイドル期間Ｄｍの範囲に収まっている、すなわちアイドル期間Ｄｍ内でデータの回復を行うことができると判定すると、当該回復処理期間Ｆｍにおいてデータの回復処理を実行する（ステップＳ２４）。
【００９２】
再び図１４を参照すると、メモリ制御部１２は、全ての疑似フレーム期間についてデータ回復制御処理が完了したか否かを判定する（ステップＳ７７）。データ回復制御処理が完了したと判定すると、メモリ制御処理を終了する。一方、データ回復制御処理が完了していないと判定すると、メモリ制御部１２は、疑似フレーム期間Ｂｍの番号ｍをインクリメントする（ステップＳ７８）。メモリ制御部１２は、ステップＳ７２に戻り、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する。
【００９３】
このように、ステップＳ７７〜Ｓ７８を経て、ステップＳ７２〜Ｓ７６の処理を繰り返し実行することにより、３ｋ番目（ｋ：自然数）の疑似フレーム期間Ｂｍにおいて回復処理期間Ｆｍが設定され、回復処理期間Ｆｍがアイドル期間Ｄｍの範囲内に収まっている場合には、データの回復処理が実行される。
【００９４】
以上のように、本実施例のメモリ制御部１２は、連続した２つの疑似フレーム期間（例えば、Ｂ１，Ｂ２）及びその直後のリード期間（例えば、Ｃ３）を計測する。そして、計測したリード期間を２つの疑似フレーム期間のうち短い方の疑似フレーム期間（例えば、Ｂ２）から減算して減算値（例えば、Ｂ２−Ｃ３）を得る。そして、かかる減算値と２つの疑似フレーム期間における２つのアイドル期間（例えば、Ｄ１，Ｄ２）とを比較して、最も短い期間を次の疑似フレーム期間におけるアイドル期間（例えば、Ｃ３）として算出する。
【００９５】
このようなアイドル期間の算出方法によれば、真性フレーム期間内に疑似フレームが１回含まれる場合（図１３）、２回含まれる場合（図１２）のいずれであっても、アイドル期間を算出することができる。そして、アイドル期間内に収まるように回復処理期間を設定することにより、データ読出処理による中断を経ることなく、データの回復処理を行うことができる。従って、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能となる。
【実施例５】
【００９６】
実施例５のメモリ制御システム１０は、図１５に示すように、ＣＰＵ１１、メモリ制御部１２、不揮発性の半導体メモリであるＮＡＮＤ型のフラッシュメモリ１３、ＲＡＭ１４及びＣＰＵバス１５を含む。
【００９７】
本実施例では、ＣＰＵ１１が１フレーム周期毎にメモリ制御部１２に供給するデータ出力要求群の回数は不定である。したがって、メモリ制御部１２のデータ読出部２１は、１フレーム周期につきＣＰＵ１１から供給されるデータ出力要求群の頻度（セット数）に応じた回数だけ、データ読出処理（データ出力処理群）を実行する。
【００９８】
本実施例のメモリ制御部１２は、データ読出部２１、期間計測部２２、期間算出部２３、回復処理部２４及び比較処理部２５を含む。
【００９９】
比較処理部２５は、連続した２個の疑似フレーム期間（例えば、Ｂ１，Ｂ２）の長さを加算した加算値と第１の下限値Ａｍｉｎとを比較する第１比較処理を行う。第１の下限値Ａｍｉｎは、真性フレーム期間Ａの長さの下限値である。また、比較処理部２５は、２個の疑似フレーム期間Ｂｍにおけるアイドル期間（例えば、Ｄ１，Ｄ２）の長さを、第２の下限値Ｄｍｉｎと比較する第２比較処理を行う。第２の下限値Ｄｍｉｎは、アイドル期間の長さの下限値である。第１比較処理において加算値が第１の下限値Ａｍｉｎ以上であると判定し、且つ第２比較処理においてアイドル期間Ｄｍの長さがいずれも第２の下限値Ｄｍｉｎ以上であると判定した場合に、回復処理部２４はデータ回復処理を実行する。
【０１００】
図１６〜１８は、本実施例におけるデータ読出処理及び期間算出処理を模式的に示すタイムチャートである。図１６のタイムチャートでは、連続する２個の疑似フレーム期間（Ｂ１，Ｂ２）の加算値（Ｂ１＋Ｂ２）が第１の下限値Ａｍｉｎ以上であり、且つ当該疑似フレーム期間におけるアイドル期間（Ｄ１，Ｄ２）の長さがいずれも第２の下限値Ｄｍｉｎ以上である。従って、メモリ制御部１２は、アイドル期間Ｄ３を算出し、回復処理期間Ｆ３との比較結果に応じてデータ回復処理を実行する。
【０１０１】
これに対し、図１７のタイムチャートでは、連続する２個の疑似フレーム期間（Ｂ１，Ｂ２）の加算値（Ｂ１＋Ｂ２）が第１の下限値Ａｍｉｎ未満であり、当該疑似フレーム期間におけるアイドル期間（Ｄ１，Ｄ２）の長さがいずれも第２の下限値Ｄｍｉｎよりも短い。従って、メモリ制御部１２は、データ回復処理を実行しない。
【０１０２】
図１８のタイムチャートは、真性フレーム期間Ａにおいてリード期間及びアイドル期間が１回ずつである場合、すなわち各真性フレーム期間Ａが疑似フレーム期間Ｂｍを１つ含む場合の例を示すタイムチャートである。各疑似フレーム期間（Ｂ１，Ｂ２）は夫々単独で第１の下限値Ａｍｉｎ以上であり、アイドル期間（Ｄ１，Ｄ２）の長さがいずれも第２の下限値Ｄｍｉｎ以上であるため、メモリ制御部１２は、アイドル期間Ｄ３を算出し、回復処理期間Ｆ３との比較結果に応じてデータ回復処理を実行する。
【０１０３】
図１９は、メモリ制御部１２が行うメモリ制御処理のルーチンを示すフローチャートである。メモリ制御部１２は、まず処理対象の疑似フレーム期間Ｂｍとして先頭の疑似フレーム期間である疑似フレーム期間Ｂ１（すなわち、ｍ＝１）をセットする（ステップＳ８１）。メモリ制御部１２は、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する（ステップＳ８２）。データ出力要求が供給されていると判定すると、メモリ制御部１２の期間計測部２２は、疑似フレーム期間計測処理を実行する（ステップＳ８３）。この疑似フレーム期間計測処理については、実施例２において図９を参照して説明した処理と同様であるため、ここでは説明を省略する。
【０１０４】
メモリ制御部１２は、疑似フレーム期間Ｂｍを２回計測したか否かを判定する（ステップＳ８４）。２回計測していないと判定すると、期間計測部２２は、ステップＳ８３に戻り、再び疑似フレーム期間計測処理を実行する。
【０１０５】
一方、２回計測したと判定すると、期間計測部２２は、ステップＳ７３〜Ｓ７４において計測した２個の疑似フレーム期間Ｂｍの加算値を第１の下限値Ａｍｉｎと比較する（ステップＳ８５）。加算値が第１の下限値Ａｍｉｎ未満であると判定すると、ステップＳ８９に移行する。
【０１０６】
一方、加算値が第１の下限値Ａｍｉｎ以上であると判定すると、期間計測部２２は、ステップＳ７３〜Ｓ７４において計測した２個の疑似フレーム期間における２つのアイドル期間（Ｄ（ｍ−１），Ｄ（ｍ−２））を、第２の下限値Ｄｍｉｎと比較する（ステップＳ８６）。２つのアイドル期間のうち少なくとも一方が第２の下限値Ｄｍｉｎ未満であると判定すると、ステップＳ８９に移行する。
【０１０７】
一方、２つのアイドル期間がいずれも第２の下限値Ｄｍｉｎ以上であると判定すると、期間計測部２２は、ステップＳ７３〜Ｓ７４において計測した２個の疑似フレーム期間の直後のリード期間Ｃｍについて、リード期間計測処理を実行する（ステップＳ８７）。例えば、ステップＳ８３〜８４において疑似フレーム期間Ｂ１及びＢ２を計測した場合、その直後のリード期間Ｃ３を計測する。なお、リード期間計測処理の詳細は、実施例１において図５を参照して説明した処理と同様であるため、ここでは説明を省略する。
【０１０８】
メモリ制御部１２は、リード期間計測処理の実行後、データ回復制御処理に移行する（ステップＳ８８）。本実施例におけるデータ回復制御処理は、実施例４のデータ回復制御処理と同様であるため、説明を省略する。
【０１０９】
メモリ制御部１２は、全ての疑似フレーム期間についてデータ回復制御処理が完了したか否かを判定する（ステップＳ８９）。データ回復制御処理が完了したと判定すると、メモリ制御処理を終了する。一方、データ回復制御処理が完了していないと判定すると、メモリ制御部１２は、疑似フレーム期間Ｂｍの番号ｍをインクリメントする（ステップＳ９０）。メモリ制御部１２は、ステップＳ８２に戻り、ＣＰＵ１１からデータ出力要求が供給されているか否かを判定する。
【０１１０】
以上のように、本実施例のメモリ制御部１２は、連続した２個の疑似フレーム期間の長さを加算した加算値と第１の下限値Ａｍｉｎ（真性フレーム期間の長さの下限値）とを比較する第１比較処理と、２個の疑似フレーム期間におけるアイドル期間の長さを第２の下限値Ｄｍｉｎ（アイドル期間の下限値）と比較する第２比較処理とを行う。そして、第１比較処理において加算値が第１の下限値Ａｍｉｎ以上であると判定し、且つ第２比較処理においてアイドル期間の長さがいずれも第２の下限値Ｄｍｉｎ以上であると判定した場合にのみ、データ回復処理を実行する。
【０１１１】
一方、第１比較処理において加算値が第１の下限値Ａｍｉｎ未満である場合、又は第２比較処理において２つのアイドル期間の少なくとも一方の長さが第２の下限値Ｄｍｉｎ未満である場合には、メモリ制御部１２は、データ回復処理に必要なアイドル期間が確保できないと判定して、データ回復処理を実行しない。
【０１１２】
従って、１フレーム周期（真性フレーム期間Ａ）毎のデータ読出処理の回数（すなわち、ＣＰＵ１１から供給されるデータ出力要求群のセット数）が不定である場合にも、データ回復処理が可能か否かを判定し、可能である場合には、アイドル期間内に収まるように回復処理期間を設定して、データ読出処理による中断を経ることなく、データの回復処理を行うことができる。従って、データ読出処理を阻害することなく効率のよいデータの回復処理を行うことが可能となる。
【０１１３】
なお、本発明は上記実施形態に限定されない。例えば、上記実施例では、本発明のメモリ制御システムを画像処理用メモリに適用した例について説明した。しかし、画像データの読み出しに限られず、メモリからのデータの読み出しに周期性があるものであればよい。
【０１１４】
また、上記実施例では、ＮＡＮＤ型のフラッシュメモリを用いる例について説明した。しかし、ＮＯＲ型のフラッシュメモリ等、他の半導体メモリを用いても良い。また、本発明は、半導体メモリに限られず、他の不揮発性メモリにも適用することが可能である。
【０１１５】
また、上記実施例４では、メモリ制御部１２が１フレーム周期毎に１回又は２回ずつデータ読出処理を実行する場合、すなわち真性フレーム期間Ａが１つ又は２つの疑似フレーム期間を有する場合について説明した。しかし、１フレーム周期毎に３回以上のデータ読出処理を実行し、真性フレーム期間Ａが３つ以上の疑似フレーム期間を有していてもよい。
【０１１６】
また、上記実施例５では、連続する２つの疑似フレーム期間の加算値と真性フレーム期間Ａの長さの下限値とを比較して第１比較処理を行う例について説明した。しかし、これに限られず、連続する３つ以上の疑似フレーム期間を真性フレーム期間Ａの長さの下限値と比較しても良い。そして、真性フレーム期間Ａが３つ以上の疑似フレーム期間を有する場合にもデータ回復処理を実行可能な構成としてもよい。
【０１１７】
また、上記実施例では、データ読出を実行しないアイドル期間を算出して、当該アイドル期間内にデータの回復処理を実行する例について説明した。しかし、ＣＰＵ１１からのデータ出力要求が想定される場面に実行される、データの回復処理以外の他の処理にも応用することが可能である。
【符号の説明】
【０１１８】
１０  メモリ制御システム
１１  ＣＰＵ
１２  メモリ制御部
１３  フラッシュメモリ
１４  ＲＡＭ
１５  ＣＰＵバス
２１  データ読出部
２２  期間計測部
２３  期間算出部
２４  回復処理部
２５  比較処理部
【図１】
0006479617.tif 000004
【図２】
0006479617.tif 000005
【図３】
0006479617.tif 000006
【図４】
0006479617.tif 000007
【図５】
0006479617.tif 000008
【図６】
0006479617.tif 000009
【図７】
0006479617.tif 000010
【図８】
0006479617.tif 000011
【図９】
0006479617.tif 000012
【図１０】
0006479617.tif 000013
【図１１】
0006479617.tif 000014
【図１２】
0006479617.tif 000015
【図１３】
0006479617.tif 000016
【図１４】
0006479617.tif 000017
【図１５】
0006479617.tif 000018
【図１６】
0006479617.tif 000019
【図１７】
0006479617.tif 000020
【図１８】
0006479617.tif 000021
【図１９】
0006479617.tif 000022