(57)【要約】      （修正有）【課題】フラッシュメモリの一部のメモリ領域を疑似モードで使用するフラッシュメモリシステムにおいて、フラッシュメモリ全体としての寿命を伸ばすメモリコントローラを提供する。【解決手段】フラッシュメモリシステム２において、メモリコントローラ１０は、ホストシステム４とフラッシュメモリ２０〜２ｋの間におけるデータ転送を制御する。メモリコントローラは、フラッシュメモリに含まれる第１のメモリ領域を疑似ＳＬＣモードで使用するとともに、第２のメモリ領域をＭＬＣモードで使用する第１の動作状態と、第１のメモリ領域をＭＬＣモードで使用するとともに、第２のメモリ領域を疑似ＳＬＣモードで使用する第２の動作状態とを有する。第１の動作状態と第２の動作状態を使用してセルタイプ間におけるウェアレベリングがなされる。【選択図】図１
2020086739.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムとフラッシュメモリの間におけるデータ転送を制御するメモリコントローラであって、
前記フラッシュメモリに含まれる第１のメモリ領域を、１つのセルにｎビット未満の情報を記憶させる第１の記憶モードで使用するとともに、前記フラッシュメモリに含まれる第２のメモリ領域を、１つのセルにｎビット以上の情報を記憶させる第２の記憶モードで使用する第１の動作状態と、
前記第１のメモリ領域を前記第２の記憶モードで使用するとともに、前記第２のメモリ領域を前記第１の記憶モードで使用する第２の動作状態と、を有することを特徴とするメモリコントローラ。
【請求項２】
前記第１のメモリ領域に対する書き換え回数が所定の条件を満たした場合に、前記第１の動作状態から前記第２の動作状態に移行することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１及び第２のメモリ領域を前記第２の記憶モードで使用するとともに、前記フラッシュメモリに含まれる第３のメモリ領域を前記第１の記憶モードで使用する第３の動作状態をさらに有し、
前記第１及び第２の動作状態においては、前記フラッシュメモリに含まれる第３のメモリ領域を前記第２の記憶モードで使用し、
前記第２のメモリ領域に対する書き換え回数が所定の条件を満たした場合に、前記第２の動作状態から前記第３の動作状態に移行することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記第１の動作状態から、前記第２及び第３の動作状態を含む他の動作状態に移行した後、所定の条件が満たされた場合に、再び前記第１の動作状態に移行することを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
前記第１及び第２のメモリ領域は、いずれも単一のブロックからなることを特徴とする請求項１乃至４のいずれか一項に記載のメモリコントローラ。
【請求項６】
前記第１及び第２のメモリ領域は、いずれも複数のブロックからなることを特徴とする請求項１乃至４のいずれか一項に記載のメモリコントローラ。
【請求項７】
請求項１乃至６のいずれか一項に記載のメモリコントローラと、前記フラッシュメモリとを備えるフラッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリコントローラ及びこれを備えるフラッシュメモリシステムに関し、特に、フラッシュメモリの一部のメモリ領域を疑似ＳＬＣ（ｐＳＬＣ）モードや疑似ＭＬＣ（ｐＭＬＣ）モードで動作させるメモリコントローラ及びこれを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
フラッシュメモリには、１つのセルに１ビットの情報を記憶するＳＬＣタイプのフラッシュメモリ、１つのセルに２ビットの情報を記憶するＭＬＣタイプのフラッシュメモリ、１つのセルに３ビットの情報を記憶するＴＬＣタイプのフラッシュメモリなどが存在する。ＳＬＣタイプのフラッシュメモリは、ビットエラーが生じにくいとともに、書き換え可能回数が多いことから信頼性が高いという利点を有する一方、ビット単価が高いという欠点がある。これに対し、ＭＬＣタイプやＴＬＣタイプのフラッシュメモリは、１つのメモリセルに２ビット又は３ビットのデータを記憶することができることから、ビット単価が安いという利点を有している。
【０００３】
特許文献１には、ＳＬＣタイプのフラッシュメモリとＭＬＣタイプのフラッシュメモリの両方を用いることによって、各タイプの特徴を生かしたフラッシュメモリシステムが開示されている。また、特許文献２には、ハードディスクドライブなどの補助記憶装置が接続されている場合、ＭＬＣタイプのフラッシュメモリを疑似ＳＬＣモードで使用することにより信頼性を向上させる方法が提案されている。特許文献２に記載されているように、ＭＬＣタイプのフラッシュメモリを疑似ＳＬＣモードで使用すれば、メモリ容量は減少するものの信頼性が向上する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−２２４１１２号公報
【特許文献２】特開２０１７−２２８０１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、フラッシュメモリの一部のメモリ領域だけを疑似ＳＬＣモードで使用する場合、ＭＬＣモードで使用するメモリ領域と疑似ＳＬＣモードで使用するメモリ領域とで書き換え可能回数が異なるため、一方のセルタイプが寿命に達すると、他方のセルタイプの寿命が残っていても、フラッシュメモリ全体として使用できなくなる。このため、フラッシュメモリ全体としての寿命が短くなるという問題があった。フラッシュメモリの書き換え可能回数には上限があり、一般的にＳＬＣタイプが最も書き換え可能回数が多く、ＭＬＣタイプが次に書き換え可能回数が多く、ＴＬＣタイプが最も書換え可能回数が少ないことが知られている。
【０００６】
このような問題は、ＭＬＣタイプのフラッシュメモリの一部を疑似ＳＬＣモードで使用する場合のみならず、ＴＬＣタイプのフラッシュメモリの一部を疑似ＳＬＣモードで使用する場合や、ＴＬＣタイプのフラッシュメモリの一部を疑似ＭＬＣモードで使用する場合など、１つのメモリセルに記憶させるビット数をフラッシュメモリの一部のメモリ領域において少なくする全てのケースにおいて生じる問題である。
【０００７】
したがって、本発明は、フラッシュメモリの一部のメモリ領域を疑似モードで使用する場合に、フラッシュメモリ全体としての寿命を最後まで使い切ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明によるメモリコントローラは、ホストシステムとフラッシュメモリの間におけるデータ転送を制御するメモリコントローラであって、フラッシュメモリに含まれる第１のメモリ領域を、１つのセルにｎビット未満の情報を記憶させる第１の記憶モードで使用するとともに、フラッシュメモリに含まれる第２のメモリ領域を、１つのセルにｎビット以上の情報を記憶させる第２の記憶モードで使用する第１の動作状態と、第１のメモリ領域を第２の記憶モードで使用するとともに、第２のメモリ領域を第１の記憶モードで使用する第２の動作状態とを有することを特徴とする。また、本発明によるフラッシュメモリシステムは、上記のメモリコントローラとフラッシュメモリとを備える。
【０００９】
本発明によれば、第１の動作状態においては第１及び第２のメモリ領域をそれぞれ第１及び第２の記憶モードで使用し、第２の動作状態においては第１及び第２のメモリ領域をそれぞれ第２及び第１の記憶モードで使用していることから、セルタイプ間におけるウェアレベリングがなされる。これにより、一部のメモリ領域だけが早期に寿命に達することがないため、フラッシュメモリ全体としての寿命を最後まで使い切ることが可能となる。
【００１０】
本発明においては、第１のメモリ領域に対する書き換え回数が所定の条件を満たした場合に、第１の動作状態から第２の動作状態に移行しても構わない。これによれば、第１のメモリ領域が第１の記憶モードにおける寿命に達する前に、第１のメモリ領域を第２の記憶モードに切り替えることが可能となる。
【００１１】
本発明によるメモリコントローラは、第１及び第２のメモリ領域を第２の記憶モードで使用するとともに、フラッシュメモリに含まれる第３のメモリ領域を第１の記憶モードで使用する第３の動作状態をさらに有し、第１及び第２の動作状態においては、フラッシュメモリに含まれる第３のメモリ領域を第２の記憶モードで使用し、第２のメモリ領域に対する書き換え回数が所定の条件を満たした場合に、第２の動作状態から第３の動作状態に移行するものであっても構わない。これによれば、第２のメモリ領域が第１の記憶モードにおける寿命に達する前に、第２のメモリ領域を第２の記憶モードに戻すことが可能となる。
【００１２】
本発明においては、第１の動作状態から、第２及び第３の動作状態を含む他の動作状態に移行した後、所定の条件が満たされた場合に、再び第１の動作状態に移行しても構わない。これによれば、第１のメモリ領域の記憶モードが交互に切り替えられることから、第１の記憶モードにおける寿命と第２の記憶モードにおける寿命をいずれも最大値近傍（例えば最大値の８０％）まで使い切ることが可能となる。
【００１３】
本発明において、第１及び第２のメモリ領域は、いずれも単一のブロックからなるものであっても構わないし、いずれも複数のブロックからなるものであっても構わない。前者によれば、各ブロックの寿命を最大化することが可能となる。一方、後者によれば、メモリコントローラによる寿命管理を簡素化することが可能となる。
【発明の効果】
【００１４】
このように、本発明によれば、フラッシュメモリの一部のメモリ領域を疑似モードで使用する場合において、フラッシュメモリ全体としての寿命を最後まで使い切ることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の好ましい実施形態によるフラッシュメモリシステム２の構成を説明するためのブロック図である。
【図２】図２は、フラッシュメモリ２０〜２ｋを構成するメモリセルの記憶モードについて説明するための模式図である。
【図３】図３は、フラッシュメモリ２０を構成するブロックを示す模式図である。
【図４】図４は、記憶モード管理部１７内におけるデータ構造の第１の例を説明するための図である。
【図５】図５は、書き換え回数４２又は４３の値の一例を示す図である。
【図６】図６（ａ）〜（ｃ）は、記憶モード管理部１７内における制御データ４０の値の変化の一例を示す図である。
【図７】図７（ａ）〜（ｃ）は、フラッシュメモリ２０を構成するブロック０〜ブロック９９９の記憶モードを示す図である。
【図８】図８は、記憶モード管理部１７内におけるデータ構造の第２の例を説明するための図である。
【図９】図９は、フラッシュメモリ２０を構成するブロックを示す模式図であり、第１の動作状態を示している。
【図１０】図１０は、書き換え回数４２又は４３の値の一例を示す図である。
【図１１】図１１は、フラッシュメモリ２０を構成するブロックを示す模式図であり、第２の動作状態を示している。
【図１２】図１２は、書き換え回数４２又は４３の値の別の例を示す図である。
【図１３】図１３は、フラッシュメモリ２０を構成するブロックを示す模式図であり、第３の動作状態を示している。
【図１４】図１４（ａ）〜（ｃ）は、書き換え回数をグループごとに示す模式図である。
【図１５】図１５（ａ）〜（ｃ）は、書き換え回数をグループごとに示す模式図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照しながら、本発明の好ましい実施形態について詳細に説明する。
【００１７】
図１は、本発明の好ましい実施形態によるフラッシュメモリシステム２の構成を説明するためのブロック図である。
【００１８】
本実施形態によるフラッシュメモリシステム２は、メモリコントローラ１０と複数のフラッシュメモリ２０〜２ｋを有している。特に限定されるものではないが、フラッシュメモリ２０〜２ｋはＮＡＮＤ型のフラッシュメモリであり、本実施形態においてはＭＬＣタイプのメモリセルによって構成されている。図１に示す例では、ｋ＋１個のフラッシュメモリ２０〜２ｋが搭載されているが、搭載されるフラッシュメモリの数については特に限定されない。
【００１９】
メモリコントローラ１０は、外部のホストシステム４とフラッシュメモリ２０〜２ｋとの間に設けられ、これらの間におけるデータ転送を制御する。ホストシステム４とメモリコントローラ１０との間におけるデータ及びコマンドの送受信はホストインターフェース１１を介して行われ、フラッシュメモリ２０〜２ｋとメモリコントローラ１０との間におけるデータ及びコマンドの送受信はフラッシュインターフェース１２を介して行われる。
【００２０】
メモリコントローラ１０は、ＣＰＵ１３、ＲＡＭ１４、ＲＯＭ１５、バッファメモリ１６及び記憶モード管理部１７を有している。ＣＰＵ１３は、ＲＯＭ１５に保持されているプログラムに従って、メモリコントローラ１０の全体の動作を制御する。ＲＯＭ１５に保持されたプログラムは、パワーオン時にＲＡＭ１４に展開されても構わない。ＲＡＭ１４は、フラッシュメモリ２０〜２ｋの制御に必要なデータを一時的に格納する作業領域であり、例えば複数のＳＲＡＭセルによって構成されている。バッファメモリ１６は、フラッシュメモリ２０〜２ｋから読み出されたリードデータ及びフラッシュメモリ２０〜２ｋに書き込むべきライトデータを一時的に保持する回路であり、ＲＡＭ１４の一部をバッファメモリ１６として用いても構わない。これにより、ホストシステム４から供給されるライトデータは、バッファメモリ１６に一時的に保持され、フラッシュメモリ２０〜２ｋが書き込み可能な状態となった後、フラッシュインターフェース１２を介してフラッシュメモリ２０〜２ｋに転送される。また、フラッシュメモリ２０〜２ｋから読み出されたリードデータは、バッファメモリ１６に一時的に保持され、ホストシステム４が受け付け可能な状態となった後、ホストインターフェース１１を介してホストシステム４に転送される。
【００２１】
さらに、メモリコントローラ１０は、記憶モード管理部１７を有している。記憶モード管理部１７は、フラッシュメモリ２０〜２ｋを構成する各ブロックの記憶モードを指定するとともに、記憶モードごとの書き換え回数を管理する回路である。記憶モード管理部１７は、ＣＰＵ１３、ＲＡＭ１４及びＲＯＭ１５とは別個に設けられた専用の回路であっても構わないし、一部又は全部の機能がＣＰＵ１３、ＲＡＭ１４又はＲＯＭ１５によって実現されるものであっても構わない。
【００２２】
図２は、フラッシュメモリ２０〜２ｋを構成するメモリセルの記憶モードについて説明するための模式図である。ここで、フラッシュメモリ２０〜２ｋは、ブロック単位で消去を実行し、ページ単位で書き込みと読み出しを実行する不揮発性メモリであり、各ブロックは複数のページで構成されている。
【００２３】
図２に示すように、本実施形態においてはフラッシュメモリ２０〜２ｋを構成するメモリセルがＭＬＣタイプのセルであるが、一部のメモリ領域３１については疑似ＳＬＣ（ｐＳＬＣ）モードで使用される。その他のメモリ領域３２については、そのままＭＬＣモードで使用される。メモリセルをどの記憶モードで使用するかは、コントローラ１０からフラッシュメモリ２０〜２ｋに供給されるコマンドによって指定される。ここで、ＭＬＣモードで使用されるブロックにおいては、ＭＬＣモード用の書き込みコマンド、読み出しコマンド及び消去コマンドを用いた処理が実行される。一方、ＳＬＣ（ｐＳＬＣ）モードで使用されるブロックにおいては、ＳＬＣ（ｐＳＬＣ）モード用の書き込みコマンド、読み出しコマンド及び消去コマンドを用いた処理が実行される。また、ＭＬＣモードで使用していたブロックをＳＬＣ（ｐＳＬＣ）モードで使用するブロックに切り替える場合には、ＭＬＣモード用の消去コマンドを用いた消去処理を実行した後に、ＳＬＣ（ｐＳＬＣ）モード用の書き込みコマンドを用いた書き込み処理を実行すればよい。一方、ＳＬＣ（ｐＳＬＣ）モードで使用していたブロックをＭＬＣモードで使用するブロックに切り替える場合には、ＳＬＣ（ｐＳＬＣ）モード用の消去コマンドを用いた消去処理を実行した後に、ＭＬＣモード用の書き込みコマンドを用いた書き込み処理を実行すればよい。
【００２４】
ｐＳＬＣモードのメモリ領域３１は、フラッシュメモリ２０〜２ｋ内におけるバッファ又はキャッシュとして使用される。したがって、フラッシュインターフェース１２から供給されるライトデータは、ＭＬＣモードのメモリ領域３２に直接書き込まれるのではなく、一旦ｐＳＬＣモードのメモリ領域３１に書き込まれる。そして、メモリ領域３１を構成する所定のブロックが特定のデータサイズになった場合、このブロックに書き込まれたデータをＭＬＣモードのメモリ領域３２にコピーする。
【００２５】
このように、一部のメモリ領域３１をバッファ又はキャッシュとして使用しているのは、ＭＬＣモードで使用するブロックに未書き込みページが存在すると、読み出しエラーが生じやすくなるからである。つまり、ＭＬＣモードで動作するメモリ領域３２については、ブロック単位でデータを書き込むことが望ましく、これを実現するために一部のメモリ領域３１をｐＳＬＣモードで使用している。但し、メモリ領域３１はバッファ又はキャッシュとして使用されるため、他のメモリ領域３２に比べて書き換え頻度が非常に高くなる。メモリセルをｐＳＬＣモードで使用すると、ＭＬＣモードで使用する場合と比べて書き換え可能回数が大幅に増加するものの、書き換え頻度によっては、ｐＳＬＣモードのメモリ領域３１が先に寿命に達してしまうことが考えられる。
【００２６】
この点を考慮し、本実施形態においてはｐＳＬＣモードのメモリ領域３１を固定するのではなく、ｐＳＬＣモードのメモリ領域３１とＭＬＣモードのメモリ領域３２を随時入れ替える処理を行う。以下、この処理について詳細に説明する。
【００２７】
図３は、フラッシュメモリ２０を構成するブロックを示す模式図である。他のフラッシュメモリ２１〜２ｋに対しても同様の処理が行われることから、以下、フラッシュメモリ２０に対する処理に着目して説明を進める。
【００２８】
図３に示す例では、フラッシュメモリ２０にブロック０〜ブロック９９９からなる１０００個のブロックが含まれている。このうち、初期状態においてはブロック０〜ブロック９９からなる１００個のブロックがｐＳＬＣモードのメモリ領域３１を構成し、ブロック１００〜ブロック９９９からなる９００個のブロックがＭＬＣモードのメモリ領域３２を構成する。したがって、ｐＳＬＣモードのメモリ領域３１よりも、ＭＬＣモードのメモリ領域３２の方が大きなメモリ容量を有している。本例では、ｐＳＬＣモードのメモリセルの割合は全体の１０％である。
【００２９】
また、フラッシュメモリ２０には管理領域３３が含まれている。管理領域３３は、メモリコントローラ１０に含まれる記憶モード管理部１７内のデータを保持するためのブロックである。管理領域３３を構成するブロックの記憶モードは、ｐＳＬＣモードであっても構わないし、ＭＬＣモードであっても構わない。さらに、ブロック０〜ブロック９９９のいずれかを管理領域３３に割り当てても構わない。
【００３０】
図４は、記憶モード管理部１７内におけるデータ構造の第１の例を説明するための図である。
【００３１】
図４に示すように、記憶モード管理部１７には、ブロック０〜ブロック９９９にそれぞれ対応する制御データ４０が保持されている。各制御データ４０は、当該ブロックの記憶モード４１、ｐＳＬＣモードにおける書き換え回数４２、ＭＬＣモードにおける書き換え回数４３によって構成されている。図４には、初期状態の制御データ４０が示されており、したがって、ブロック０〜ブロック９９に対応する記憶モード４１はｐＳＬＣモードを示し、ブロック１００〜ブロック９９９に対応する記憶モード４１はＭＬＣモードを示している。また、書き換え回数４２及び４３はいずれもゼロである。
【００３２】
このような初期状態からスタートしてフラッシュメモリ２０に対するアクセスが実行され、これによりデータの書き換えが行われるたびに、記憶モード管理部１７は対応するブロックの書き換え回数４２又は４３の値を増加させる。ここで、ｐＳＬＣモードで使用されるブロック０〜ブロック９９は、バッファ又はキャッシュとして使用されることから、書き換え回数４２の値が比較的頻繁に増加する。これに対し、ＭＬＣモードで使用されるブロック１００〜ブロック９９９については、書き換え回数４３の値の増加は緩やかである。図５には、初期状態からしばらく経過した後の書き換え回数４２又は４３の値の一例が示されている。図５に示すように、ブロック０〜ブロック９９については、ｐＳＬＣモードにおける書き換え回数４２の値が増加しているのに対し、ＭＬＣモードにおける書き換え回数４３の値はゼロのままである。逆に、ブロック１００〜ブロック９９９については、ＭＬＣモードにおける書き換え回数４３の値が増加しているのに対し、ｐＳＬＣモードにおける書き換え回数４２の値はゼロのままである。
【００３３】
記憶モード管理部１７は、ｐＳＬＣモードにおける書き換え回数４２の値が所定値に達すると、当該ブロックの記憶モード４１をｐＳＬＣモードからＭＬＣモードに切り替えるとともに、ＭＬＣモードで動作している別のブロックの記憶モード４１をｐＳＬＣモードに切り替える。上記の「所定値」の具体的な値については特に限定されないが、少なくとも、ｐＳＬＣモードにおける書き換え可能回数以下値である必要があり、ｐＳＬＣモードにおける書き換え可能回数よりも十分に少ない値（例えば、ｐＳＬＣモードにおける書き換え可能回数の１／１００）であることが好ましい。一例として、本実施形態では書き換え回数４２の値が１００に達するたびに、上記の切り替えを行う場合を例に説明する。
【００３４】
図６は、記憶モード管理部１７内における制御データ４０の値の変化の一例を示す図であり、（ａ），（ｂ），（ｃ）の順に時間が経過し、書き換え回数が増加する様子が示されている。また、図７（ａ）〜（ｃ）は、フラッシュメモリ２０を構成するブロック０〜ブロック９９９の記憶モードを示す図であり、それぞれ図６（ａ）〜（ｃ）の状態に対応している。
【００３５】
図６（ａ）に示す動作状態では、ブロック０、９６、９７に対応する書き換え回数４２の値が１００に達し、これに応じてブロック０、９６、９７の記憶モード４１がＭＬＣモードに切り替えられている。また、ｐＳＬＣモードで動作するブロックが３つ減ったことに応答して、ブロック１００〜１０２の記憶モード４１がｐＳＬＣモードに切り替えられている。これにより、フラッシュメモリ２０内における記憶モードも、図７（ａ）に示す通りとなる。ＭＬＣモードからｐＳＬＣモードに切り替えられるブロックの選択方法については特に限定されないが、ここではブロック番号順に切り替える場合を例に説明する（他にも書き換え回数が多い順から切り替える方法や書き換え回数が少ない順から切り替える方法など様々考えられる）。図３に示す動作状態と図６（ａ）に示す動作状態を比較すると、図３に示す第１の動作状態においては、ブロック０、９６、９７がｐＳＬＣモードで使用され、ブロック１００〜１０２がＭＬＣモードで使用されているのに対し、図６（ａ）に示す第２の動作状態においては、ブロック０、９６、９７がＭＬＣモードで使用され、ブロック１００〜１０２がｐＳＬＣモードで使用されていることが分かる。
【００３６】
図６（ｂ）に示す動作状態では、さらにブロック２、４、９９に対応する書き換え回数４２の値が１００に達し、これに応じてブロック２、４、９９の記憶モード４１がＭＬＣモードに切り替えられている。また、ｐＳＬＣモードで動作するブロックが３つ減ったことに応答して、ブロック１０３〜１０５の記憶モード４１がｐＳＬＣモードに切り替えられている。これにより、フラッシュメモリ２０内における記憶モードも、図７（ｂ）に示す通りとなる。図６（ａ）に示す動作状態と図６（ｂ）に示す動作状態を比較すると、図６（ａ）に示す第２の動作状態においては、ブロック２、４、９９がｐＳＬＣモードで使用され、ブロック１０３〜１０５がＭＬＣモードで使用されているのに対し、図６（ｂ）に示す第３の動作状態においては、ブロック２、４、９９がＭＬＣモードで使用され、ブロック１０３〜１０５がｐＳＬＣモードで使用されていることが分かる。
【００３７】
図６（ｃ）に示す動作状態では、ブロック０〜９９に対応する書き換え回数４２の値がすべて１００に達しており、ブロック０〜９９の記憶モード４１が全てＭＬＣモードに切り替えられている。その代わりに、ブロック１００〜１９９の記憶モード４１がｐＳＬＣモードに切り替えられている。これにより、フラッシュメモリ２０内における記憶モードも、図７（ｃ）に示す通りとなる。
【００３８】
このような記憶モードの切り替え動作は、最後のブロック９９９がｐＳＬＣモードに切り替えられるまで順次実行される。そして、ブロック９９９がｐＳＬＣモードに切り替えられた後は、再び先頭のブロック０に戻り、ブロック０、１、２の順にｐＳＬＣモードに順次切り替える。本実施形態においては、このような動作を繰り返し実行することによりｐＳＬＣモードで使用するブロックを随時入れ替えている。ここで、書き換え回数４２の値は、所定値（本例では１００）に達するたびにリセットしても構わないし、そのままカウントを継続しても構わない。前者の場合、書き換え回数４２の値が１００に達するたびに、ｐＳＬＣモードからＭＬＣモードに切り替えればよい。この場合、制御データ４０のデータ量を削減することができる。一方、後者の場合、書き換え回数４２の値の下２桁が００を示すたびに、ｐＳＬＣモードからＭＬＣモードに切り替えればよい。この場合、ｐＳＬＣモードにおける累計書き換え回数を保存することが可能となる。
【００３９】
そして、システム終了時には、記憶モード管理部１７に保持されている現在の制御データ４０をフラッシュメモリ２０の管理領域３３に書き込む。これにより、現在の制御データ４０を不揮発的に保持することが可能となる。そして、次回の電源投入時には、フラッシュメモリ２０の管理領域３３に保持されている制御データ４０を読み出し、これを記憶モード管理部１７にロードする。これにより、制御データ４０を正しく引き継ぐことが可能となる。
【００４０】
このように、本実施形態によるフラッシュメモリシステムにおいては、ｐＳＬＣモードで動作するブロックが順次切り替わることから、ｐＳＬＣモードで使用するブロックをバッファ又はキャッシュとして使用する場合であっても、書き換え回数が偏在することがない。これにより書き換え回数がブロック間において平準化されることから、フラッシュメモリ２０〜２ｋ全体としての寿命を最大限に利用することが可能となる。
【００４１】
しかも、本実施形態においては、ｐＳＬＣモードとＭＬＣモードの切り替えをブロック単位で行っていることから、ブロック間におけるｐＳＬＣモードでの書き換え回数にほとんどばらつきが生じない。このため、書き換え回数のばらつきに起因する寿命の低下を最小限に抑えることが可能となる。
【００４２】
但し、本発明においてｐＳＬＣモードとＭＬＣモードの切り替えをブロック単位で行うことは必須でなく、複数のブロック単位でモード切替を行っても構わない。以下、ｐＳＬＣモードとＭＬＣモードの切り替えをブロック単位で行う例について説明する。
【００４３】
図８は、記憶モード管理部１７内におけるデータ構造の第２の例を説明するための図である。
【００４４】
図８に示す例では、フラッシュメモリ２０内のブロック０〜ブロック９９９を１０個のグループにグループ化し、グループごとに書き換え回数をカウントしている。図８には、初期状態の制御データ４０が示されており、したがって、ブロック０〜ブロック９９に対応するグループの記憶モード４１はｐＳＬＣモードを示し、他のグループに対応する記憶モード４１はＭＬＣモードを示している。また、書き換え回数４２及び４３はいずれもゼロである。この状態においては、図９に示すように、ブロック０〜ブロック９９がｐＳＬＣモードで動作し、ブロック１００〜ブロック９９９がＭＬＣモードで動作する。
【００４５】
このような初期状態からスタートしてフラッシュメモリ２０に対するアクセスが実行され、これによりデータの書き換えが行われるたびに、記憶モード管理部１７は対応するグループの書き換え回数４２又は４３の値を増加させる。記憶モード管理部１７は、グループ内におけるブロックの区別は行わない。そして、図１０に示すように、ブロック０〜ブロック９９に対応するグループの書き換え回数４２の値が所定値（本例では１００００）に達すると、当該グループの記憶モード４１をｐＳＬＣモードからＭＬＣモードに切り替えるとともに、次のグループの記憶モード４１をｐＳＬＣモードに切り替える。次のグループとは、ブロック１００〜ブロック１９９に対応するグループである。これにより、図１１に示すように、ブロック０〜ブロック９９、ブロック２００〜ブロック９９９がｐＳＬＣモードで動作し、ブロック１００〜ブロック１９９がＭＬＣモードで動作する。
【００４６】
フラッシュメモリ２０に対するアクセスがさらに繰り返し実行され、図１２に示すように、ブロック１００〜ブロック１９９に対応するグループの書き換え回数４２の値が所定値（本例では１００００）に達すると、当該グループの記憶モード４１をｐＳＬＣモードからＭＬＣモードに切り替えるとともに、次のグループの記憶モード４１をｐＳＬＣモードに切り替える。次のグループとは、ブロック２００〜ブロック２９９に対応するグループである。これにより、図１３に示すように、ブロック０〜ブロック１９９、ブロック３００〜ブロック９９９がｐＳＬＣモードで動作し、ブロック２００〜ブロック２９９がＭＬＣモードで動作する。
【００４７】
図１４及び図１５は、書き換え回数をグループごとに示す模式図であり、網掛けされた矢印５１はｐＳＬＣモードにおける書き換え回数を長さで示し、白い矢印５２はＭＬＣモードにおける書き換え回数を長さで示している。
【００４８】
図１４（ａ）は、図８及び図９を用いて説明した状態、つまり、ブロック０〜ブロック９９がｐＳＬＣモードで動作している状態を示している。そして、ブロック０〜ブロック９９のｐＳＬＣモードにおける合計書き換え回数が所定値Ａに達した場合、図１４（ｂ）の状態に移行する。図１４（ｂ）は、図１０及び図１１を用いて説明した状態、つまり、ブロック１００〜ブロック１９９がｐＳＬＣモードで動作している状態を示している。そして、ブロック１００〜ブロック１９９のｐＳＬＣモードにおける合計書き換え回数が所定値Ａに達した場合、図１４（ｃ）の状態に移行する。図１４（ｃ）は、図１２及び図１３を用いて説明した状態、つまり、ブロック２００〜ブロック２９９がｐＳＬＣモードで動作している状態を示している。
【００４９】
このような動作を順次行うと、図１５（ａ）に示すように、ブロック９００〜ブロック９９９がｐＳＬＣモードで動作する状態となる。そして、ブロック９００〜ブロック９９９のｐＳＬＣモードにおける合計書き換え回数が所定値Ａに達すると、図１５（ｂ）に示すように、再びブロック０〜ブロック９９をＭＬＣモードからｐＳＬＣモードに切り替える。その後の動作は同じであり、ブロック０〜ブロック９９のｐＳＬＣモードにおける合計書き換え回数が所定値Ｂに達した場合、図１５（ｃ）の状態に移行する。ここで示す例では、所定値Ｂは、所定値Ａの２倍としてあるが、その限りではない。
【００５０】
このように、ｐＳＬＣモードとＭＬＣモードの切り替えを複数のブロック単位で行えば、記憶モード管理部１７による書き換え回数の管理を簡素化することができるとともに、制御データ４０のデータ量を削減することが可能となる。
【００５１】
以上、本発明の好ましい実施形態について説明したが、本発明は、上記の実施形態に限定されることなく、本発明の主旨を逸脱しない範囲で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【００５２】
例えば、上記実施形態では、ＭＬＣタイプのメモリセルからなるフラッシュメモリの一部のメモリ領域をｐＳＬＣモードで使用する例を説明したが、本発明がこれに限定されるものではない。したがって、本発明は、ＴＬＣタイプのメモリセルからなるフラッシュメモリの一部のメモリ領域をｐＳＬＣモードで使用するシステムに適用しても構わないし、ＴＬＣタイプのメモリセルからなるフラッシュメモリの一部のメモリ領域をｐＭＬＣモードで使用するシステムに適用しても構わない。つまり、１つのセルにｎビット以上の情報を記憶可能なフラッシュメモリにおいて、一部のメモリ領域だけ１つのセルにｎビット未満の情報を記憶させる記憶モードで使用する全てのケースに適用可能である。
【００５３】
また、上記実施形態では、書き換え回数に基づいてブロックの記憶モードを切り替える例を説明したが、本発明がこれに限定されるものではなく、書き換え回数以外の条件に基づいて記憶モードを切り替えても構わない。例えば、書き換え回数にかかわらず、一定期間ごとに記憶モードの切り替えを行っても構わない。
【符号の説明】
【００５４】
２    フラッシュメモリシステム
４    ホストシステム
１０    メモリコントローラ
１１    ホストインターフェース
１２    フラッシュインターフェース
１３    ＣＰＵ
１４    ＲＡＭ
１５    ＲＯＭ
１６    バッファメモリ
１７    記憶モード管理部
２０〜２ｋ    フラッシュメモリ
３１    第１のメモリ領域
３２    第２のメモリ領域
３３    管理領域
４０    制御データ
４１    記憶モード
４２，４３    書き換え回数
５１    ｐＳＬＣモードにおける書き換え回数
５２    ＭＬＣモードにおける書き換え回数
【図１】
2020086739.tif 000003
【図２】
2020086739.tif 000004
【図３】
2020086739.tif 000005
【図４】
2020086739.tif 000006
【図５】
2020086739.tif 000007
【図６】
2020086739.tif 000008
【図７】
2020086739.tif 000009
【図８】
2020086739.tif 000010
【図９】
2020086739.tif 000011
【図１０】
2020086739.tif 000012
【図１１】
2020086739.tif 000013
【図１２】
2020086739.tif 000014
【図１３】
2020086739.tif 000015
【図１４】
2020086739.tif 000016
【図１５】
2020086739.tif 000017