(57)【要約】【課題】不揮発性メモリの種類により決定される要因を考慮して、タイムアウト規定を守ることができる不揮発性記憶システムを提供する。【解決手段】不揮発性記憶システム１００では、不揮発性メモリ制御部２１４が、タイムアウト監視部２１３から出力される集約処理停止信号に基づいて、集約処理を中断させ、タイムアウトの発生を確実に防止することができる。その結果、不揮発性記憶システム１００では、タイムアウト値（タイムアウト規定）を厳密に守ることができる。【選択図】図１
2010182216.tif 000002
【特許請求の範囲】
【請求項１】
所定のコマンドに基づいて、不揮発性メモリに対してデータの読み出し／書き込み制御を行うメモリコントローラであって、
前記所定のコマンドに基づいて前記不揮発性メモリに対してデータの読み出し／書き込み処理を行うとともに、前記不揮発性メモリにおける不要な情報が記憶されている領域を開放し、前記不揮発性メモリの記憶可能領域を増加させる処理である集約処理を実行する不揮発性メモリ制御部と、
前記所定のコマンドに対するタイムアウト値を取得するタイムアウト値取得部と、
前記所定のコマンドに基づいて、前記不揮発性メモリ制御部により実行される処理が開始された場合、前記処理の開始時点からの経過時間を測定し、前記経過時間が前記タイムアウト値を超える前の時刻において、集約処理停止信号を前記不揮発性メモリ制御部に出力するタイムアウト監視部と、
を備え、
前記不揮発性メモリ制御部は、前記タイムアウト監視部から集約処理停止信号が出力された場合であり、かつ、前記集約処理が終了していない場合、前記集約処理を中断させる、
メモリコントローラ。
【請求項２】
前記不揮発性メモリ制御部は、第１ステップ処理から第Ｎステップ処理（Ｎ：２以上の自然数）の複数のステップ処理を行うことで、前記集約処理を実行し、
前記タイムアウト監視部は、前記所定のコマンドに基づく処理ＴＡ１とし、前記集約処理の第１ステップ処理から第ｋステップ処理（ｋは、ｋ≦Ｎ−１を満たす自然数）までの合計処理時間ＴＢ（ｋ）とし、前記集約処理の第１ステップ処理から第（ｋ＋１）ステップ処理（ｋは、ｋ＋１≦Ｎを満たす自然数）までの合計処理時間ＴＢ（ｋ＋１）とし、前記所定のコマンドの前記タイムアウト値に相当する時間をＴＯとしたとき、
ＴＡ１＋ＴＢ（ｋ）＜ＴＯ＜ＴＡ１＋ＴＢ（ｋ＋１）
となる場合、第（ｋ＋１）ステップ処理が実行される前の時刻までに、前記集約処理停止信号を出力する、
請求項１に記載のメモリコントローラ。
【請求項３】
前記不揮発性メモリ制御部は、前記集約処理の各ステップ処理の処理時間に関する情報を、前記不揮発性メモリから取得し、
前記タイムアウト監視部は、前記不揮発性メモリ制御部により取得された前記集約処理の各ステップ処理の処理時間に関する情報に基づいて、前記集約処理停止信号を出力する、
請求項２に記載するメモリコントローラ。
【請求項４】
不揮発性メモリと、
請求項１から３のいずれかに記載のメモリコントローラと、
を備える不揮発性記憶装置。
【請求項５】
請求項４に記載の不揮発性記憶装置と、
前記不揮発性記憶装置に対してデータの読み出し／書き込み制御を指示するコマンドを発行する処理命令部と、
を備える不揮発性記憶システム。
【請求項６】
所定のコマンドに基づいて、不揮発性メモリに対してデータの読み出し／書き込み制御を行うメモリコントローラを制御するプログラムであって、
前記所定のコマンドに基づいて前記不揮発性メモリに対してデータの読み出し／書き込み処理を行うとともに、前記不揮発性メモリにおける不要な情報が記憶されている領域を開放し、前記不揮発性メモリの記憶可能領域を増加させる処理である集約処理を実行する不揮発性メモリ制御ステップと、
前記所定のコマンドに対するタイムアウト値を取得するタイムアウト値取得ステップと、
前記所定のコマンドに基づいて、前記不揮発性メモリ制御ステップにより実行される処理が開始された場合、前記処理の開始時点からの経過時間を測定し、前記経過時間が前記タイムアウト値を超える前の時刻において、集約処理停止信号を出力するタイムアウト監視ステップと、
を備え、
前記不揮発性メモリ制御ステップでは、前記タイムアウト監視ステップにより集約処理停止信号が出力された場合であり、かつ、前記集約処理が終了していない場合、前記集約処理を中断させる、
メモリコントローラを制御するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システムおよびプログラムに関する。特に、不揮発性メモリにおいて不要な情報が記憶されている領域を開放し、記憶可能領域を増加させる集約処理に関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶モジュールには、主に、非脱着型と脱着型とがある。非着脱型の不揮発性記憶モジュールは、例えば、デジタルスチルカメラやポータブルオーディオ機器本体内に組み込まれて使用される。一方、着脱型の不揮発性記憶モジュールは、半導体メモリカードに用いられることが多く、近年、その需要が高まっている。
半導体メモリカードは、光ディスクやテープメディアなどと比較して非常に高価格なものではあるが、小型・軽量であり、耐震性に優れ、取り扱いも簡便である等のメリットを有している。そのため、半導体メモリカードは、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体として用いられることが多く、その需要が広まっている。また、近年では、半導体メモリカードの大容量化が進んでおり、この大容量の半導体メモリカードを用いて、パーソナルコンピュータのハードディスクの代替装置や、デジタルテレビの録画メディア等を実現させるための応用検討も進んでいる。
【０００３】
半導体メモリカードは、一般的に、不揮発性の主記憶メモリとして用いられるフラッシュメモリと、それを制御するメモリコントローラを有している。
メモリコントローラは、デジタルスチルカメラやパーソナルコンピュータ本体などのアクセスモジュールからの情報の読み出し／書き込み指示に応じて、フラッシュメモリに対して、情報の読み出し／書き込み制御を行う。
フラッシュメモリは、一般的に、情報の書き込み／読み出しを「ページ」単位で行い、情報の消去を「ブロック」単位で行う。
「ブロック」は、フラッシュメモリが情報の消去を行う単位であり、複数の「ページ」から形成される（ページ単位で形成される）。１ブロック当たりの容量としては、通常、５１２ｋＢｙｔｅ或いは２５６ｋＢｙｔｅが採用されることが多い。
【０００４】
「ページ」は、フラッシュメモリが情報の書き込み／読み出しを行う単位である。「ページ」は、予め定められた数のメモリセルで構成される。１ページ当たりの容量としては、２ｋＢｙｔｅ或いは４ｋＢｙｔｅが採用されることが多い。
フラッシュメモリは、データ（情報）をオーバーライト（上書き）して更新することができないため、データ（情報）を書き込むのに十分な空き領域が存在するブロックに対して書き込みを行うことでデータ（情報）を記憶する。このとき、一部領域にのみ情報が書き込まれたブロックが順次発生することとなり、データを書き込む際に十分な空き領域を有するブロックが次第に減少する。これに対処するため、「集約処理」と呼ばれる処理が実行される。「集約処理」とは、不揮発性メモリにおいて、不要な情報（例えば、重複している情報）が記憶されている領域を開放し、記憶可能領域を増加させる処理のことをいい、具体的には、以下のように実行される。
（１）まず、一部領域にのみ情報が書き込まれているブロック（これを「ブロックＡ」とする。）に対し、当該ブロックＡに書き込まれている情報のうち、必要な情報のみを、当該必要な情報を書き込みための容量を確保可能な他のブロック（これを「ブロックＢ」とする。）に移動する。なお、このとき、ブロックＡに論理順（論理ページ順）に書き込まれていない情報については、論理順（論理ページ順）に並べ替えた後、またはブロックＡからブロックＢに移動する際にブロックＡから論理順にデータを読み出すことで、論理順（論理ページ順）となった情報をブロックＢに書き込み、ブロックＡの必要な情報を、ブロックＢに移動する。
（２）次に、必要な情報をブロックＡからブロックＢに移動した後、ブロックＡ全体に対して消去処理を実行する。
【０００５】
これにより、不揮発性メモリ（例えば、フラッシュメモリ）において、不要な情報が記憶されている領域を開放し、記憶可能領域を増加させることができる。
集約処理の一例について、図７（ａ）および（ｂ）を用いて説明する。
図７（ａ）に示すように、ブロックＡにおいて、必要なデータ（情報）が「必要データ２」、「必要データ１」、「必要データ３」、「必要データ０」の順で、ページ単位に書き込まれており、不要なデータ（情報）が、「不要データ０」、「不要データ１」、「不要データ２」、「不要データ３」、「不要データ４」の順で、ページ単位に書き込まれている。そして、「必要データ０」〜「必要データ３」の容量分以上の空き容量を有するブロックＢ（図７の例では、ブロックＢは、消去済みブロックであり、データは一切書き込まれていない状態のブロックである。）を移動先ブロックとする。
【０００６】
ブロックＡにおいて、必要データは、論理順（論理ページ順）に書き込まれていないので、必要データを論理順（論理ページ順）に並べ替える。そして、論理順（論理ページ順）に並べ替えられた必要データを消去済みブロックであるブロックＢに書き込んでいく。
そして、旧ブロックであるブロックＡに対してデータ消去処理を実行する。
これにより、不揮発性メモリのブロックＡおよびブロックＢは、図７（ｂ）に示す状態となり、ブロックＡが解放され、必要なデータのみがブロックＢに移動され、論理順にデータが記録される。
なお、集約処理は、常に行われるわけではなく、不揮発性メモリにおいてデータを書き込み時に必要に応じて行われる。この為、集約処理が実行される場合、書き込み処理の時間が、集約処理が実行されない場合に比べ長くなる。
【０００７】
これに対して、集約処理を分割するという方法および当該方法を実行する不揮発性記憶装置の一例が、特許文献１に開示されている。特許文献１に開示されている従来の不揮発性記憶装置の動作について、図８を用いて説明する。
従来の不揮発性記憶装置では、データ書き込み等の消去処理以外の処理（以下、「消去外処理」という。）を実行する際に、不揮発性メモリにおいて空き容量が不足した場合、当該空き容量を確保すべく消去外処理の実行前に集約処理が実行される。
図８は、従来の不揮発性記憶装置の概念的動作フローを示したものである。なお、図８は、消去外処理Ｔ１が実行された後、不揮発性メモリにおいて空き容量が確保できなくなった場合の動作フローを示している。
図８に示すように、従来の不揮発性記憶装置は、消去外処理Ｔ１を実行した後、不揮発性メモリにおいて空き容量を確保すべく集約処理Ｇ１を実行する。このとき、従来の不揮発性記憶装置は、集約処理Ｇ１を、データ移動処理Ｇｄ１、消去前処理Ｇｒ１、消去本処理Ｇｅ１、消去後処理Ｇｏ１の各処理に分割して（以下、この分割した処理を「ＧＣ構成処理」という。）、各分割した処理を実行することで集約処理Ｇ１を実行する。
【０００８】
そして、従来の不揮発性記憶装置は、各ＧＣ構成処理が終了した時点で、集約処理を中断して、消去外処理を実行する。即ち、従来の不揮発性記憶装置は、次のように、集約処理Ｇ１および消去外処理を実行する。
（１）データ移動処理Ｇｄ１を終了後に、消去外処理Ｔ２を実行する。
（２）消去外処理Ｔ２の終了後に、消去前処理Ｇｒ１を実行する。
（３）消去前処理Ｇｒ１を終了後に、消去外処理Ｔ３を実行する。
（４）消去外処理Ｔ３の終了後に、消去本処理Ｇｅ１を実行する。
（５）消去本処理Ｇｅ１を終了後に、消去外処理Ｔ４を実行する。
（６）消去外処理Ｔ４の終了後に、消去後処理Ｇｏ１を実行する。
（７）消去後処理Ｇｏ１が終了して集約処理Ｇ１が完了すると、その後は、空き容量が不足するまで、更に、他の消去外処理Ｔ５、Ｔ６、…を順次実行する。
【０００９】
従来の不揮発性記憶装置では、このように処理を実行することで、集約処理の実行を伴う書き込み処理の処理時間が、集約処理の実行を伴わない場合に比べて、著しく長くなることを防止している。
【特許文献１】特開２００８−１４６３４１（第７−９頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、不揮発性記憶装置において、通常、処理命令に対するタイムアウト値が規定されている。つまり、不揮発性記憶装置において、ある一定期間中に、処理命令に対する応答が無かった場合、デッドロックが発生するのを避けるために、タイムアウト規定（タイムアウト値の規定）が設けられている。不揮発性記憶装置では、このタイムアウト規定に適合するように、集約処理を行う必要がある。
また、不揮発性記憶装置に搭載されているフラッシュメモリの種類（品種）によって、Ｐｒｏｇｒａｍ  Ｂｕｓｙ時間、Ｅｒａｓｅ  Ｂｕｓｙ時間、ページサイズ、ライトサイクルタイム、リードサイクルタイム、１ブロック内のページ数が異なる。不揮発性記憶装置では、これらのフラッシュメモリの種類（品種）により決定される要因を考慮して、タイムアウト規定に適合するように制御する必要がある。
【００１１】
しかしながら、従来の不揮発性記憶装置で実行される書き込み方法では、タイムアウト規定を守れない場合が発生するという問題がある。
本発明は上記問題点に鑑み、不揮発性メモリ（例えば、フラッシュメモリ）の種類（品種）により決定される要因を考慮して、タイムアウト規定を守ることができるメモリコントローラ、不揮発性記憶装置、不揮発性記憶システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
第１の発明は、所定のコマンドに基づいて、不揮発性メモリに対してデータの読み出し／書き込み制御を行うメモリコントローラであって、不揮発性メモリ制御部と、タイムアウト値取得部と、タイムアウト監視部と、を備える。
不揮発性メモリ制御部は、所定のコマンドに基づいて不揮発性メモリに対してデータの読み出し／書き込み処理を行うとともに、不揮発性メモリにおける不要な情報が記憶されている領域を開放し、不揮発性メモリの記憶可能領域を増加させる処理である集約処理を実行する。タイムアウト値取得部は、所定のコマンドに対するタイムアウト値を取得する。タイムアウト監視部は、所定のコマンドに基づいて、不揮発性メモリ制御部により実行される処理が開始された場合、処理の開始時点からの経過時間を測定し、経過時間がタイムアウト値を超える前の時刻において、集約処理停止信号を不揮発性メモリ制御部に出力する。そして、不揮発性メモリ制御部は、タイムアウト監視部から集約処理停止信号が出力された場合であり、かつ、集約処理が終了していない場合、集約処理を中断させる。
【００１３】
このメモリコントローラでは、タイムアウト値取得部により、所定のコマンドに対するタイムアウト値を取得し、所定のコマンドに基づいて、不揮発性メモリ制御部により実行される処理が開始された場合、処理の開始時点からの経過時間を測定し、経過時間がタイムアウト値を超える前の時刻において、集約処理停止信号を不揮発性メモリ制御部に出力する。そして、タイムアウト監視部から出力される集約処理停止信号に基づいて、集約処理が中断されるので、タイムアウトの発生を確実に防止することができる。
第２の発明は、第１の発明であって、不揮発性メモリ制御部は、第１ステップ処理から第Ｎステップ処理（Ｎ：２以上の自然数）の複数のステップ処理を行うことで、集約処理を実行する。また、タイムアウト監視部は、所定のコマンドに基づく処理ＴＡ１とし、集約処理の第１ステップ処理から第ｋステップ処理（ｋは、ｋ≦Ｎ−１を満たす自然数）までの合計処理時間ＴＢ（ｋ）とし、集約処理の第１ステップ処理から第（ｋ＋１）ステップ処理（ｋは、ｋ＋１≦Ｎを満たす自然数）までの合計処理時間ＴＢ（ｋ＋１）とし、所定のコマンドのタイムアウト値に相当する時間をＴＯとしたとき、
ＴＡ１＋ＴＢ（ｋ）＜ＴＯ＜ＴＡ１＋ＴＢ（ｋ＋１）
となる場合、第（ｋ＋１）ステップ処理が実行される前の時刻までに、集約処理停止信号を出力する。
【００１４】
このメモリコントローラでは、不揮発性メモリ制御部により、第１ステップ処理から第Ｎステップ処理（Ｎ：２以上の自然数）の複数のステップ処理を行うことで、集約処理が実行される。複数のステップ処理は、通常、不揮発性メモリの種類（品種）により決定されるものであるので、このメモリコントローラにより、不揮発性メモリの種類（品種）により決定される要因を考慮して、タイムアウト規定を守ることができる。つまり、このメモリコントローラでは、不揮発性メモリの種類（品種）により決定される各ステップ処理の処理時間を考慮して、集約処理を実行するので、不揮発性メモリの種類（品種）がどのようなものであってもタイムアウトの発生を確実に防止することができる。
第３の発明は、第２の発明であって、不揮発性メモリ制御部は、集約処理の各ステップ処理の処理時間に関する情報を、不揮発性メモリから取得し、タイムアウト監視部は、不揮発性メモリ制御部により取得された集約処理の各ステップ処理の処理時間に関する情報に基づいて、集約処理停止信号を出力する。
【００１５】
第４の発明は、不揮発性メモリと、第１から第３のいずれかの発明であるメモリコントローラと、を備える不揮発性記憶装置である。
これにより、第１から第３のいずれかの発明と同様の効果を奏する不揮発性記憶装置を実現することができる。
第５の発明は、第４の発明である不揮発性記憶装置と、不揮発性記憶装置に対してデータの読み出し／書き込み制御を指示するコマンドを発行する処理命令部と、を備える不揮発性記憶システムである。
これにより、第４の発明と同様の効果を奏する不揮発性記憶システムを実現することができる。
第６の発明は、所定のコマンドに基づいて、不揮発性メモリに対してデータの読み出し／書き込み制御を行うメモリコントローラを制御する制御方法をコンピュータに実行させるプログラムである。メモリコントローラを制御する制御方法は、不揮発性メモリ制御ステップと、タイムアウト値取得ステップと、タイムアウト監視ステップと、を備える。
【００１６】
不揮発性メモリ制御ステップでは、所定のコマンドに基づいて不揮発性メモリに対してデータの読み出し／書き込み処理を行うとともに、不揮発性メモリにおける不要な情報が記憶されている領域を開放し、不揮発性メモリの記憶可能領域を増加させる処理である集約処理を実行する。タイムアウト値取得ステップでは、所定のコマンドに対するタイムアウト値を取得する。タイムアウト監視ステップでは、所定のコマンドに基づいて、不揮発性メモリ制御ステップにより実行される処理が開始された場合、処理の開始時点からの経過時間を測定し、経過時間がタイムアウト値を超える前の時刻において、集約処理停止信号を出力する。そして、不揮発性メモリ制御ステップでは、タイムアウト監視ステップにより集約処理停止信号が出力された場合であり、かつ、集約処理が終了していない場合、集約処理を中断させる。
【００１７】
これにより、第１の発明と同様の効果を奏するメモリコントローラを制御する制御方法をコンピュータに実行させるプログラムを実現することができる。
【発明の効果】
【００１８】
本発明によれば、タイムアウト規定を守りながら、集約処理を実行することが可能となる。さらに、不揮発性メモリの品種により決定される要因を考慮して、適応的に集約処理を実行することができる。これにより、メモリコントローラ、不揮発性記憶装置、または不揮発性記憶システムにおいて、使用できる不揮発性メモリ（例えば、フラッシュメモリ）の品種を増やし、用途に合わせた不揮発性メモリ（例えば、フラッシュメモリ）の選定が可能になる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施形態について、図面を参照しながら説明する。
［第１実施形態］
＜１．１：不揮発性記憶システムの構成＞
図１は、第1実施形態に係る不揮発性記憶システム１００の概略構成図である。
図１に示すように、不揮発性記憶システム１００は、処理命令部１（例えば、不揮発性記憶装置にデータを記録するホスト装置）と、処理命令部１からの命令（コマンド等）により情報（データ）の読み出し／書き込み等を行う不揮発性記憶装置２と、を備える。そして、不揮発性記憶装置２は、情報（データ）を記憶する不揮発性メモリ２２（例えば、フラッシュメモリ）と、不揮発性メモリ２２に対して、情報（データ）の読み出し／書き込み等の制御を行うメモリコントローラ２１と、を備える。
【００２０】
メモリコントローラ２１は、インターフェース部（以下、ＩＦ部）２１１と、タイムアウト値取得部２１２と、タイムアウト監視部２１３と、不揮発性メモリ制御部２１４と、を備える。
ＩＦ部２１１は、処理命令部１とメモリコントローラとの通信のインターフェース処理を行う。具体的には、ＩＦ部２１１は、処理命令部１から送信された命令（コマンド等）を受信し、受信した命令の内容に応じて、受信した命令（コマンド等）を不揮発性メモリ制御部２１４またはタイムアウト値取得部２１２に出力する。ＩＦ部２１１は、タイムアウト値についての情報を含む命令を受信した場合、その受信した命令をタイムアウト値取得部に出力する。
タイムアウト値取得部２１２は、ＩＦ部２１１から出力された命令（コマンド等）からタイムアウト値を取得する。そして、取得したタイムアウト値をタイムアウト監視部２１３に出力する。
【００２１】
タイムアウト監視部２１３は、タイムアウト値取得部２１２から出力されたタイムアウト値を保持するとともに、不揮発性メモリ制御部２１４が実行している処理内容についての情報（任意の処理がどこまで実行されたかを示す情報を含む。）を不揮発性メモリ制御部２１４から取得する。タイムアウト監視部２１３は、不揮発性メモリ制御部２１４の処理を監視し、不揮発性メモリ制御部２１４の処理時間と、タイムアウト値に基づいて、不揮発性メモリ制御部２１４が次の処理に移行した場合、タイムアウトが発生するか否かを判定する。そして、タイムアウト監視部２１３は、タイムアウトが発生すると判定した場合（具体的な判断方法等については後述する）、集約処理停止信号を不揮発性メモリ制御部２１４に出力する。また、タイムアウト監視部２１３は、経過時間を計測する機能を有しており、任意のタイミングからの経過時間を計測することができる。
【００２２】
不揮発性メモリ制御部２１４は、ＩＦ部２１１から出力された命令（コマンド等）に基づいて、不揮発性メモリ２２を制御する。また、不揮発性メモリ制御部２１４は、タイムアウト監視部２１３に対して、不揮発性メモリ制御部２１４が実行する処理内容についての情報を出力する。また、不揮発性メモリ制御部２１４は、タイムアウト監視部２１３から集約処理停止信号が出力された場合、集約処理を停止する。
＜１．２：不揮発性記憶システムの動作＞
以上のように構成された不揮発性記憶システムの動作について、説明する。
処理命令部１は、不揮発性メモリ制御部２１４へ発行予定の命令のタイムアウト値を含むデータ（このデータは、例えば、データパケットやコマンドパケットにより送信される。）をメモリコントローラ２１のＩＦ部２１１に送信する。ここでは、発行予定の命令がＷｒｉｔｅ命令であるとして、以下説明する。
【００２３】
ＩＦ部２１１では、受信したデータを解析し、Ｗｒｉｔｅ命令のタイムアウト値に関する情報を含むデータであると判定し、当該受信データをタイムアウト値取得部２１２に出力する。
タイムアウト値取得部２１２では、入力されたデータからＷｒｉｔｅ命令のタイムアウト値を取得する。そして、取得されたタイムアウト値は、タイムアウト監視部２１３に出力される。
また、処理命令部１は、メモリコントローラ２１に対して、発行予定の命令（Ｗｒｉｔｅ命令）を発行する。ＩＦ部２１１は、処理命令部１から送信された発行予定の命令（Ｗｒｉｔｅ命令）を受信し、受信したＷｒｉｔｅ命令を不揮発性メモリ制御部２１４に出力する。
【００２４】
不揮発性メモリ制御部２１４は、Ｗｒｉｔｅ命令に従い、不揮発性メモリ２２に対して、データ書き込み処理（Ｗｒｉｔｅ処理）を実行する。そして、不揮発性メモリ制御部２１４は、Ｗｒｉｔｅ処理の実行後に、集約処理を実行する。
一方、タイムアウト監視部２１３は、タイムアウトの規定に従い経過時間の測定を開始する。具体的に、図２を用いて説明する。図２は、不揮発性記憶システムにおけるＷｒｉｔｅ処理および集約処理の処理タイミングを模式的に示した図である。なお、図２において、Ｗｒｉｔｅ処理１は、集約処理が必要なＷｒｉｔｅ処理であり、Ｗｒｉｔｅ処理２は、集約処理を必要としないＷｒｉｔｅ処理であるものとする。また、集約処理１および集約処理２は、Ｗｒｉｔｅ処理１に伴う集約処理であるものとする。
図２に示すように、時刻ｔ０において、不揮発性メモリ制御部２１４によりＷｒｉｔｅ処理（図２のＷｒｉｔｅ処理１）が開始される。タイムアウト監視部２１３は、時刻ｔ０から経過時間の測定を開始し、Ｗｒｉｔｅ処理および集約処理の処理時間が、タイムアウト値を超えないか監視する。
【００２５】
なお、不揮発性記憶装置２では、集約処理を以下の３つのステップ処理に分ける。
（１）新規ブロックの取得処理
（２）必要なデータのページ毎の移動・書き込み処理
（３）旧ブロックの消去処理
タイムアウト監視部２１３は、不揮発性メモリ制御部２１４の処理を監視し、不揮発性メモリ制御部２１４の処理時間と、タイムアウト値に基づいて、不揮発性メモリ制御部２１４が次の処理に移行した場合、タイムアウトが発生するか否かを判定する。そして、タイムアウト監視部２１３は、タイムアウトが発生すると判定した場合、集約処理停止信号を不揮発性メモリ制御部２１４に出力する。図２の場合では、時刻ｔｓに、集約処理停止信号が出力されている。
【００２６】
タイムアウト監視部２１３から集約処理停止信号が出力されると、不揮発性メモリ制御部２１４は、現在実行中の処理が終了した後、次の処理に移行するのを停止する。なお、集約処理停止信号の出力タイミングは、次の処理（実行するとタイムアウトが発生すると判定された処理）に移行される前の時刻であればよく、必ずしも、不揮発性メモリ制御部２１４の現在実行中の処理の終了時点と一致させる必要はない。
≪集約処理停止信号を発信する判断方法≫
次に、タイムアウト監視部２１３が集約処理停止信号を発信する判断方法を、図３を用いて説明する。
図３は、不揮発性記憶システム１００における集約処理の各ステップ処理にかかる時間の一例を示している。
【００２７】
図３に示すように、この例では、（１）新規ブロック取得処理の処理時間は、１００［μｓ］であり、（２）各ページの必要データ移動・書き込み処理の処理時間は、２０００［μｓ］であり、（３）旧ブロック消去処理の処理時間は、３０００［μｓ］である。また、１ブロック内のページ数は、１２８ページである。
例えば、タイムアウト値を１５０［ｍｓ］とし、Ｗｒｉｔｅ処理に４０００［μｓ］かかったとすると、
１００［μｓ］＋２０００［μｓ］×７２＜１５０［ｍｓ］−４０００［μｓ］＜１００［μｓ］＋２０００［μｓ］×(７２＋１)
であるので、第７２ページの移動・書き込み処理の最中に、タイムアウト監視部２１３は、集約処理停止信号を不揮発性メモリ制御部２１４に発信し、集約処理において、どこまで処理が完了しているか（この場合は、第７２ページの移動・書き込みまで完了していること）を記憶しておく。
【００２８】
不揮発性メモリ制御部２１４は、タイムアウト監視部２１３から出力される集約処理停止信号に基づいて、集約処理を一時的に中断させることで、タイムアウトの発生を防ぐ。
そして、集約処理が再開できる状況になったときに、タイムアウト監視部２１３が保持している情報（集約処理がどこまで完了しているか示す情報）に基づいて、続きの集約処理を再開させる。例えば、図２の例では、時刻ｔｓで集約処理が中断され、時刻ｔｒで集約処理が再開され、そして、時刻ｔｅで集約処理が終了している。
以上のように、不揮発性記憶システム１００では、不揮発性メモリ制御部２１４が、タイムアウト監視部２１３から出力される集約処理停止信号に基づいて、集約処理を中断させ、タイムアウトの発生を確実に防止することができる。その結果、不揮発性記憶システム１００では、タイムアウト値（タイムアウト規定）を厳密に守ると同時に、タイムアウト値で定められる時間内において、集約処理を進めることが可能となる。
【００２９】
なお、上記ではタイムアウト値を処理命令部１からメモリコントローラ２１に知らせる場合について説明したが、これに限定されることはなく、例えば、製品出荷時等に、タイムアウト値に関する情報を、予め不揮発性メモリ２２に記憶しておいても良い。この場合、不揮発性メモリ２２から読み出したタイムアウト値に関する情報は、例えば、不揮発性メモリ制御部２１４からタイムアウト値取得部２１２に通知されるようにすればよい。なお、タイムアウト値がコマンド毎に異なっている場合は、それらのコマンドとタイムアウトの関係を示すデータを、あるいは一律にタイムアウト値が決まっている場合はそのタイムアウト値のデータを記憶しておくこととなる。
また、集約処理の各ステップ処理の処理時間を不揮発性メモリ制御部２１４に接続される不揮発性メモリ２２に記憶しておき、それを読み出すことで、集約処理の各ステップ処理の処理時間を取得するようにしても良いし、集約処理の各ステップ処理の処理時間が処理命令部１から不揮発性記憶装置２に通知されるものであってもよい。
【００３０】
また、上記では、集約処理の各ステップ処理時間に基づいて、集約処理の中断タイミングを決定する場合について説明したが、例えば、以下のようにしてもよい。
タイムアウト監視部２１３が、メモリコントローラの動作クロックから、（例えば、クロックカウントにより）タイムアウトが発生する直前のタイミングを算出し、当該タイミングで、割込を発生させることで、集約処理を中断させるようにしてもよい。
なお、上記では、不揮発性メモリとして、フラッシュメモリを用いる場合を想定しているが、これに限定されることはなく、例えば、不揮発性メモリとして、フラッシュメモリ以外の他の不揮発性メモリ（例えば、ＥＥＰＲＯＭ等）を用いるようにしてもよい。
［第２実施形態］
図４に、第２実施形態に係る不揮発性記憶システム２００の概略構成図を示す。
【００３１】
第１実施形態に係る不揮発性記憶システム１００は、１つの不揮発性メモリ２２を備えるが、第２実施形態に係る不揮発性記憶システム２００では、複数の不揮発性メモリ（図４の場合は、３つの不揮発性メモリ（第１不揮発性メモリ２２Ａ、第２不揮発性メモリ２２Ｂおよび第３不揮発性メモリ２２Ｃ））を備えている。また、第２実施形態に係る不揮発性記憶システム２００では、第１実施形態に係る不揮発性記憶システム１００における不揮発性メモリ制御部２１４を、複数の不揮発性メモリを制御する不揮発性メモリ制御部２１４Ａに置換した構成となっている。以上の点が、第２実施形態に係る不揮発性記憶システム２００と第１実施形態に係る不揮発性記憶システム１００との相違点である。
なお、本実施形態において、第１実施形態と同様の部分については、同一符号を付し、説明を省略する。
【００３２】
不揮発性記憶システム２００は、複数種類の不揮発性メモリ（図４では、第１不揮発性メモリ２２Ａ、第２不揮発性メモリ２２Ｂおよび第３不揮発性メモリ２２Ｃの３つの不揮発性メモリ）を備える。なお、以下では、説明便宜のため、不揮発性メモリが３つ（第１不揮発性メモリ２２Ａ、第２不揮発性メモリ２２Ｂおよび第３不揮発性メモリ２２Ｃ）の場合について説明する。
第１実施形態では、ある１種類の不揮発性メモリ（フラッシュメモリ）の集約処理の各ステップ処理の所要時間のテーブル（図３のテーブル）を用いたが、本実施形態のように、不揮発性記憶システム２００において、複数種類の不揮発性メモリ（フラッシュメモリ）が接続される場合は、接続されている不揮発性メモリ（フラッシュメモリ）に応じて、集約処理の処理時間のテーブルを選択する。
【００３３】
具体的には、不揮発性メモリ制御部２１４Ａは、接続されている第１不揮発性メモリ２２Ａ、第２不揮発性メモリ２２Ｂおよび第３不揮発性メモリ２２Ｃのそれぞれに対して、コマンドを発行し、そのレスポンスをタイムアウト監視部２１３に通知する。タイムアウト監視部２１３は、通知されたレスポンスから、どのような種類の不揮発性メモリ（フラッシュメモリ）であるかを判別する。
例えば、不揮発性メモリ制御部２１４Ａは、第２不揮発性メモリ２２Ｂに対して、ＩＤ  ＲＥＡＤコマンドを発行し、接続されている第２不揮発性メモリ２２Ｂ（フラッシュメモリＢ）のレスポンスに含まれるメーカーコードを元に、集約処理の処理時間のテーブルを選択する。例えば、ＩＤ  ＲＥＡＤコマンドのレスポンスのメーカーコードと、不揮発性メモリ（フラッシュメモリ）の種類との対応が、図５に示すものであるとする。この場合、不揮発性メモリ制御部２１４Ａは、不揮発性メモリに対して、ＩＤ  ＲＥＡＤコマンドを発行し、そのレスポンスによりメーカーコードを取得する。第２不揮発性メモリ２２Ｂに対して発行したＩＤ  ＲＥＡＤコマンドのレスポンスにおいて、メーカーコードが“０Ｂ”であれば、不揮発性メモリ制御部２１４Ａは、図５に示すテーブルから、接続されている不揮発性メモリ（フラッシュメモリ）が「フラッシュメモリＢ」であると判定する。
【００３４】
そして、不揮発性メモリ制御部２１４Ａは、図６に示すテーブルから、品種判定した不揮発性メモリ（フラッシュメモリ）（上記の場合では、「フラッシュメモリＢ」）に対応する集約処理の各ステップ処理の処理時間を取得する。
そして、不揮発性メモリ制御部２１４Ａは、第２不揮発性メモリ２２Ｂに対して、集約処理を行う場合、図６に示すテーブルの「フラッシュメモリＢ」のデータを用いて処理を行う。
同様にして、不揮発性記憶システム２００において、第１不揮発性メモリ２２Ａが「フラッシュメモリＡ」であり、第３不揮発性メモリ２２Ｃが「フラッシュメモリＣ」であると認識される。そして、不揮発性メモリ制御部２１４Ａは、第１不揮発性メモリ２２Ａに対して、集約処理を行う場合、図６に示すテーブルの「フラッシュメモリＡ」のデータを用いて処理を行い、第３不揮発性メモリ２２Ｃに対して、集約処理を行う場合、図６に示すテーブルの「フラッシュメモリＣ」のデータを用いて処理を行う。なお、集約処理については、第１実施形態と同様であるので、説明は省略する。
【００３５】
以上により、不揮発性記憶システム２００では、複数種類の不揮発性メモリが接続されている場合であっても、不揮発性メモリの種類（品種）により決定される集約処理の各ステップ処理の処理時間を取得し、取得した集約処理の各ステップ処理の処理時間に基づいて、集約処理を実行するので、タイムアウトの発生を確実に防止することができる。その結果、不揮発性記憶システム２００では、複数種類の不揮発性メモリが接続されている場合であっても、タイムアウト値（タイムアウト規定）を厳密に守ることができる。
なお、接続されている不揮発性メモリの判別処理において、メーカーコードではなく、デバイスコード等を利用し、接続される不揮発性メモリ（フラッシュメモリ）の判別を行うようにしてもよい。つまり、不揮発性メモリに対してコマンドを発行し、そのレスポンスから、不揮発性メモリの種別を判別できるものであれば、それを利用するようにしてもよい。言い換えれば、不揮発性記憶システムにおいて不揮発性メモリの判別に利用するコマンドは、接続される不揮発性メモリ（フラッシュメモリ）の判別が可能なレスポンスを取得できるものであれば良い。
【００３６】
また、図５の不揮発性メモリ（フラッシュメモリ）の品種とレスポンスとのテーブル、図６のフラッシュメモリ品種と集約処理の各ステップ処理にかかる時間とのテーブルは、予め不揮発性メモリに記憶されるものであっても良い。
なお、上記では、不揮発性記憶システム２００において、複数の不揮発性メモリが接続される場合について説明したが、これに限定されることはなく、例えば、１つの不揮発性メモリのみが不揮発性メモリ制御部２１４Ａに接続されており、不揮発性メモリに対してコマンドを発行し、そのレスポンスから、接続されている不揮発性メモリの種別を判定し、判定された種別の不揮発性メモリに対応する集約処理の各ステップ処理の処理時間に基づいて、集約処理を行うようにしてもよい。このようにすることで、不揮発性記憶装置２Ａに実装される不揮発性メモリの種類が複数であっても、メモリコントローラ２１Ａを変更する必要がない。言い換えれば、不揮発性記憶装置２Ａを製造する場合、実装する不揮発性メモリの種類に関係なく、メモリコントローラ２１Ａを共用することができる。
【００３７】
［他の実施形態］
なお、上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置において、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【００３８】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。また、上記実施形態の各機能部を、ＣＰＵバス構成（ＣＰＵ、ＲＯＭ、ＲＡＭ、所定の機能部をバス接続した構成）により実現するようにしてもよい。また、上記実施形態の各処理をソフトウェアにより実現する場合、ＯＳを用いて実現するようにしてもよい。
なお、上記実施形態に係る不揮発性記憶システム、不揮発性記憶装置をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
【００３９】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【産業上の利用可能性】
【００４０】
本発明にかかるメモリコントローラ、不揮発性記憶装置、不揮発性記憶システムおよびプログラムは、タイムアウト規定を守りながら、適切に集約処理を実行するものであり、半導体メモリカードなどの不揮発性記憶モジュールを使用した静止画記録再生装置や動画記録再生装置、あるいは携帯電話等において有益である。
【図面の簡単な説明】
【００４１】
【図１】第１実施形態に係る不揮発性記憶システム１００の概略構成図
【図２】不揮発性記憶システムにおけるＷｒｉｔｅ処理および集約処理の処理タイミングを模式的に示した図
【図３】集約処理の各ステップ処理の所要時間の一例を表すテーブル
【図４】第２実施形態に係る不揮発性記憶システム２００の概略構成図
【図５】不揮発性メモリ（フラッシュメモリ）の品種毎のＩＤ  ＲＥＡＤレスポンスのメーカーコードの一例を示すテーブル
【図６】不揮発性メモリ（フラッシュメモリ）の品種毎の集約処理の各ステップ処理の所要時間の一例を示すテーブル
【図７】ＣＧ処理を示す図
【図８】従来例の概念的動作フローを示す図
【符号の説明】
【００４２】
１００、２００  不揮発性記憶システム
１  処理命令部
２、２Ａ  不揮発性記憶装置
２１、２１Ａ  メモリコントローラ
２２、２２Ａ、２２Ｂ、２２Ｃ  不揮発性メモリ
２１１  ＩＦ部
２１２  タイムアウト値取得部
２１３  タイムアウト監視部
２１４、２１４Ａ  不揮発性メモリ制御部
【図１】
2010182216.tif 000003
【図２】
2010182216.tif 000004
【図３】
2010182216.tif 000005
【図４】
2010182216.tif 000006
【図５】
2010182216.tif 000007
【図６】
2010182216.tif 000008
【図７】
2010182216.tif 000009
【図８】
2010182216.tif 000010