(57)【要約】      （修正有）【課題】フラッシュメモリの寿命を延ばすことができる、フラッシュメモリの制御装置を提供する。【解決手段】フラッシュメモリの複数のブロックを、低頻度データブロックと高頻度データブロックに分ける。低頻度データブロックには、更新頻度の低いデータとして予め設定された低頻度データを記憶する。一方、高頻度データブロックには、更新頻度の高いデータとして予め設定された高頻度データを記憶する。そして、フラッシュメモリに新たに記憶させるデータの種類が低頻度データであれば低頻度データブロックに記憶させ、高頻度データであれば高頻度データブロックに記憶させる。【選択図】図３
2013029879.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域が複数のブロックに分けられており、データの消去はブロック単位で行うフラッシュメモリに対してデータの記憶および消去を行う、フラッシュメモリの制御装置であって、
前記複数のブロックに対して、更新頻度の低いデータとして予め設定された低頻度データを記憶する低頻度データブロックと、更新頻度の高いデータとして予め設定された高頻度データを記憶する高頻度データブロックとを設定し、
前記フラッシュメモリに新たに記憶させるデータの種類が、前記低頻度データであれば前記低頻度データブロックに記憶させ、高頻度データであれば前記高頻度データブロックに記憶させることを特徴とする、フラッシュメモリの制御装置。
【請求項２】
請求項１において、
前記低頻度データブロックに記憶されているデータを、そのブロックに記憶されている最も古いデータの記憶時点から、フラッシュメモリのデータ保持期間よりも短い期間に設定された書換期間経過後に、他の低頻度データブロックに移動させることを特徴とする、フラッシュメモリの制御装置。
【請求項３】
請求項２において、
前記低頻度データブロックに設定しているブロックと、前記高頻度データブロックに設定しているブロックとを、逐次、入れ替えることを特徴とする、フラッシュメモリの制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリの制御装置に関し、特に、フラッシュメモリの寿命を延ばすことができる制御装置に関する。
【背景技術】
【０００２】
フラッシュメモリは、データの消去を、所定サイズに設定されたブロック単位でしか行うことができない。そのため、新たに記憶するデータは、既に書き込まれたデータに対する更新データであっても、既に書きこまれたデータに上書きするのではなく、既に書き込まれたデータと同じブロック内の空き領域に順次記憶していく。そして、ブロックに空き領域がなくなったら、ブロック内のデータのうち有効なデータを別のブロックに退避させた後に、ブロック単位で消去を行う。新たなデータの記憶は、有効なデータを退避させたブロックの空き領域に行っていく。
【０００３】
ところで、フラッシュメモリには書き換え回数寿命が存在し、書き換え回数寿命に到達したブロックには書き込みを行うことができない。そこで、特許文献１では、各ブロックの書換回数が、できるだけ書き換え回数寿命に到達しないようにするため、書き換え回数の少ないブロックを優先的に使用してデータの書き込みを行うようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−１６４８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述のように、ブロックに記憶されたデータを消去する際には、ブロック内のデータのうち有効なデータを、何も記憶されていない別のブロックに退避させる。この退避させるデータが多い場合、すなわち有効なデータが多い場合には、退避先のブロックは、退避させたデータが記憶された直後から既に空き領域が少ないことになる。その結果、そのブロックは、少ない書き込み量で一杯になってしまうので、少ない書き込み量で消去をしなければならないことになる。従って、そのブロックは、書き換え回数寿命が早く来てしまうことになる。
【０００６】
前述の特許文献１には、ブロックに書きこむデータの種類については特に記載はないが、ここで、１つのブロックに、更新頻度の高いデータと更新頻度の低いデータとが混在している場合を考える。
【０００７】
更新頻度の高いデータと更新頻度の低いデータとが同じブロックに混在している場合、そのブロックは、更新頻度の高いデータの更新頻度の影響により、比較的早くに一杯になってしまう。そして、一杯になった場合には、ブロック単位で消去を行う前に、有効なデータを全部退避させる。従って、更新頻度の低いデータも、更新頻度の高いデータに基づく更新頻度で他のブロックへ退避させられることになる。
【０００８】
更新頻度の高いデータは、消去されるブロックに、最新のデータのみならず過去のデータも含まれることも多く、最新のデータと過去のデータとが含まれている場合、最新のデータのみを退避先のブロックに退避させればよい。よって、更新頻度の高いデータが多いほど、退避先のブロックは、退避直後の空き容量が多いことになる。一方で、更新頻度の低いデータは、消去されるブロックに、最新のデータと過去のデータが両方含まれていることは少ない。よって、更新頻度の低いデータは、更新頻度の高いデータとは異なり、退避データ量を、消去されるブロックに記憶されているデータに対して少なくすることができない場合が多い。
【０００９】
このように、同一ブロックに更新頻度の高いデータと更新頻度の低いデータとが混在していると、更新頻度の低いデータは、更新頻度の高いデータに基づく頻度で退避させられるものの、更新頻度の高いデータほどには、退避させるデータ量を少なくすることができない。このことにより、退避先のブロックの退避直後の空き容量が不要に少なくなっており、書き換え回数寿命に早く到達してしまっていた。
【００１０】
本発明は、この事情に基づいて成されたものであり、その目的とするところは、フラッシュメモリの寿命を延ばすことができる、フラッシュメモリの制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
前記目的を達成するための請求項１記載の発明は、記憶領域が複数のブロックに分けられており、データの消去はブロック単位で行うフラッシュメモリに対してデータの記憶および消去を行うフラッシュメモリの制御装置であって、前記複数のブロックに対して、更新頻度の低いデータとして予め設定された低頻度データを記憶する低頻度データブロックと、更新頻度の高いデータとして予め設定された高頻度データを記憶する高頻度データブロックとを設定し、前記フラッシュメモリに新たに記憶させるデータの種類が、前記低頻度データであれば前記低頻度データブロックに記憶させ、高頻度データであれば前記高頻度データブロックに記憶させることを特徴とする。
【００１２】
このようにすれば、高頻度データブロックには、更新頻度の低い低頻度データは含まれず、更新頻度の高い高頻度データのみが記憶されるので、高頻度データブロックが一杯になったときには、同じ種類のデータであって、最新のデータと過去のデータとが含まれることが多くなる。よって、高頻度データブロックが一杯になったときに退避させるデータ量を少なくすることができる。すなわち、退避先のブロックの空き容量を多くすることができる。これにより、退避先のブロックが一杯になるのが遅くなるので、そのブロックの寿命を延ばすことができる。
【００１３】
請求項２記載の発明は、前記低頻度データブロックに記憶されているデータを、そのブロックに記憶されている最も古いデータの記憶時点から、フラッシュメモリのデータ保持期間よりも短い期間に設定された書換期間経過後に、他の低頻度データブロックに移動させることを特徴とする。
【００１４】
低頻度データと高頻度データとを別々のブロックに記憶させることにより、低頻度データは、低頻度データブロックが一杯になる前に、データ保持期間が経過してしまうことも考えられる。しかし、このように、低頻度データブロックに記憶されているデータについては、フラッシュメモリのデータ保持期間よりも短い期間に設定された書換期間経過後に他のブロックに移動させることにすれば、データ保持期間が経過してしまうことを防止できる。よって、低頻度データが、データ保持期間経過により消滅してしまうことを防止できる。
【００１５】
請求項３記載の発明は、低頻度データブロックに設定しているブロックと、高頻度データブロックに設定しているブロックとを、逐次、入れ替えることを特徴とする。
【００１６】
高頻度データブロックは低頻度データブロックに比べて書換頻度が高くなることから、このように、低頻度データブロックに設定しているブロックと、高頻度データブロックに設定しているブロックとを、逐次、入れ替えるようにすれば、各ブロックの書換頻度が平準化され、フラッシュメモリ全体の寿命をさらに延ばすことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明が適用された制御装置１０、および、この制御装置１０が制御するフラッシュメモリ２０を備えた記憶システムの全体構成図である。
【図２】制御装置１０がフラッシュメモリ２０にデータを記憶させる際に実行する処理を示すフローチャートである。
【図３】図２に示したフローチャートの処理により行われるデータの記憶・退避処理を、従来処理と対比して概念的に説明する図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を図面に基づいて説明する。図１は、本発明が適用された制御装置１０、および、この制御装置１０が制御するフラッシュメモリ２０を備えた記憶システムの全体構成図である。この記憶システムは、たとえば、車両に搭載され、車両の機器の状態を逐次記憶する車両ダイアグシステムの一部として用いられる。
【００１９】
図１に示すように、制御装置１０とフラッシュメモリ２０とはバスライン３０により互いに接続されている。制御装置１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３を備えたコンピュータであり、ＣＰＵ１１が、ＲＡＭ１３の一時記憶機能を利用しつつ、ＲＯＭ１２に記憶されたプログラムを実行することで、制御装置１０は、フラッシュメモリ２０に対して、データの記憶、読み出し、消去を行う。また、ＲＯＭ１２には上記プログラムの他に、外部から入力されるデータの種類と、頻度種別（低頻度データか高頻度データかを示すもの）との対応関係も記憶している。
【００２０】
上記制御装置１０により制御するフラッシュメモリ２０は、ＮＯＲ型、ＮＡＮＤ型のいずれでもよいが、本実施形態では、ＮＡＮＤ型であるとする。ＮＯＲ型、ＮＡＮＤ型のいずれのフラッシュメモリであってもデータの消去はブロック単位で行う。しかし、書き込み単位には相違があり、ＮＯＲ型では１バイトまたは１ワード単位で書き込みを行うのに対して、ＮＡＮＤ型では、ブロック単位（消去単位）よりも小さな単位に設定されているページ単位で書き込みを行う。
【００２１】
フラッシュメモリ２０は、記憶領域が多数のブロックに分けられている。このブロックの大きさは、フラッシュメモリ２０の用途により適宜設定されるものである。また、フラッシュメモリ２０に書きこむデータの構造は、公知の種々のデータ構造を採用できる。たとえば、「有効データフラグ」、「データ種類」、「データサイズ」、「データ本体」、「ＣＲＣチェックデータ」を順に含む構造とすることができる。なお、単にデータというときは、「有効データフラグ」・・・を含む一組のデータを指すものとする。
【００２２】
制御装置１０は、バスライン３０を介して、フラッシュメモリ２０に記憶させる必要があるデータ（以下、取得データ）を外部から取得した場合には、その取得データに基づいて、上述の「有効データフラグ」等を有するデータを作成して、フラッシュメモリ２０に記憶させる。
【００２３】
図２は、制御装置１０がフラッシュメモリ２０にデータを記憶させる際に実行する処理を示すフローチャートである。この図２に示すフローチャートを用いて、制御装置１０がフラッシュメモリ２０にデータを記憶させる際に実行する処理を説明する。
【００２４】
この図２に示す処理は、前述の取得データを取得した場合に実行する。まず、ステップＳ１では、取得データのデータ種類を判別する。データ種類の判別は、取得データに含まれている「データ種類」に基づいて行う。データ種類には、たとえば、車両ダイアグシステムに用いられる場合には、比較的短い周期で取得するダイアグデータ（機器の状態を示すデータ、作動要因データ）や、工場出荷時に設定される初期データなどがある。
【００２５】
続くステップＳ２では、上記取得データを記憶する記憶先ブロックを決定する。記憶先ブロックとしては、低頻度データブロックと高頻度データブロックとがある。低頻度データブロックとは、更新頻度の低いデータとして予め設定された低頻度データを記憶するブロックである。一方、高頻度データブロックは、更新頻度の高いデータとして予め設定された高頻度データを記憶するブロックである。制御装置１０は、フラッシュメモリ２０の多数のブロックのうちの一部または全部を、低頻度データブロック、高頻度データブロックに設定している。
【００２６】
取得データが低頻度データであるか高頻度データであるかは、ステップＳ１で判別したデータ種別と、ＲＯＭ１２に記憶している対応関係とを用いて決定する。たとえば、前述のダイアグデータは高頻度データであり、初期データは低頻度データである。そして、取得データが低頻度データであれば記憶先を低頻度データブロックのうちの書き込みに使用中の１つのブロックに決定し、高頻度データであれば高頻度データブロックのうちの書き込みに使用中の１つのブロックに決定する。
【００２７】
続くステップＳ３では、取得データに基づいて、前述の「有効データフラグ」等を有するデータを作成し、そのデータをステップＳ２で決定したブロックにおいて、記憶済みのページの直後の空きページに記憶させる。また、このステップＳ３では、上記データが、同ブロックに既に記憶済みのデータの更新データとなる場合には、既に記憶済みのデータの有効データフラグを１（有効）から０（無効）に書き換える。なお、フラッシュメモリは、一般的に、このような１→０の書き換えは可能である。
【００２８】
続くステップＳ４では、ステップＳ３でデータを記憶させた結果、そのデータを記憶させたブロックが一杯となったか否かを判断する。この判断は、書き込みアドレスが、ブロックの最終ページのアドレスであるか否かにより行う。
【００２９】
この判断が否定判断である場合には、図２に示す処理を終了する。一方、肯定判断であった場合には、ステップＳ５に進み、そのブロックに記憶されている複数のデータのうち有効なデータのみを、別のブロックに退避（移動）させる。移動先のブロックは、一杯になったブロックと同種の頻度種別データを記憶するブロックであって、一度も書き込みが行われていないため、あるいは、データ消去により、何もデータが記憶されていないブロックである。これに該当するブロックが複数ある場合には、それら複数のブロックのうち、所定の規則（たとえば、物理アドレス順）により、一つのブロックを決定する。続くステップＳ６では、一杯になったデータブロック全体の記憶内容を消去する。
【００３０】
図３は、図２に示したフローチャートの処理により行われるデータの記憶・退避処理を、従来処理と対比して概念的に説明する図であり、図３（Ａ）が図２の処理に基づくデータの記憶・退避処理、図３（Ｂ）が従来処理に基づくデータの記憶・退避処理である。
【００３１】
図３（Ａ）、（Ｂ）とも、Ｇ１−Ｄｘ（ｘ＝１、２、・・・）は低頻度データを意味し、Ｇ２−Ｄｘは高頻度データを意味している。図３（Ｂ）に示す従来処理では、低頻度データＧ１−Ｄｘと、高頻度データＧ２−Ｄｘとを同じブロックに記憶しているので、ブロックｍが一杯になったときに、「→」で示す４つのデータを退避させる必要がある。その結果、退避先のブロックは、退避データが書きこまれた直後から、空き容量が少なくなってしまう。
【００３２】
これに対して、図３（Ａ）に示すように、本実施形態では、低頻度データＧ１−Ｄｘと、高頻度データＧ２−Ｄｘとを別々のブロックに記憶している。従って、ブロックｍが一杯になったときに退避させるデータは、「→」にて示す最新のＧ２−Ｄ１、Ｇ２−Ｄ２の２つのデータのみである。よって、退避先のブロックには、比較的大きい空き容量が存在する。
【００３３】
制御装置１０は、図２に示した処理の他に、低頻度データブロックについては、そのブロックに記憶されている最も古いデータの記憶時点からの経過時間を計時している。そして、その経過時間が、フラッシュメモリ２０のデータ保持期間よりも短い期間に設定された書換期間を経過した時点で、そのブロックに記憶されているデータを別の低頻度データブロックに移動させる。なお、ここで移動させるデータは、移動元の低頻度データブロックに記憶されている全てのデータでもよいが、そのブロックに記憶されているデータのうちの有効なデータのみとすることが好ましい。
【００３４】
データの移動後は、データ移動元の低頻度データブロックの消去を行うが、その後は、この物理ブロックを高頻度データブロックに設定変更し、代わりに、それまで高頻度データブロックであった物理ブロックを低頻度データブロックに設定する。このようにすることにより、上記書換期間が経過する毎に、低頻度データブロックと高頻度データブロックとを入れ替えることになる。
【００３５】
なお、入れ替えにより低頻度データブロックとなるブロックをどのブロックにするかは適宜設定することができる。一例を挙げると、たとえば、図３（Ａ）において、ブロック０、１が低頻度データブロックに設定され、他のブロックが高頻度データブロックに設定されているとする。上記書換期間が経過したことにより、ブロック０のデータをブロック１に退避させ、そのブロック０を高頻度データに設定するとともに、ブロック１に１を加えたブロックを、新たな低頻度データブロックとすることが考えられる。このようにすれば、低頻度データブロックが１つずつ順番に移動することになる。
【００３６】
以上、説明した本実施形態によれば、高頻度データブロックには、更新頻度の高い高頻度データのみが記憶されるので、高頻度データブロックが一杯になったときには、同じ種類のデータについて、最新のデータと過去のデータとが含まれることが多くなる。よって、高頻度データブロックが一杯になったときに退避させるデータ量が少なくなるので、退避先のブロックの空き容量を多くすることができる。その結果、退避先のブロックが一杯になるのが遅くなるので、そのブロックが書換回数寿命に到達するのを遅くする、すなわち、そのブロックの寿命を長くすることができる。
【００３７】
また、本実施形態によれば、低頻度データブロックに記憶されているデータについては、フラッシュメモリ２０のデータ保持期間よりも短い期間に設定された書換期間が経過した時点で他のブロックに移動させている。これにより、低頻度データブロックに記憶させたデータに対して書き換えを行うまでの期間は、フラッシュメモリ２０のデータ保持期間よりも長くならないので、低頻度データが、データ保持期間経過により消滅してしまうことを防止できる。
【００３８】
また、本実施形態によれば、低頻度データブロックの書換期間が経過した時点で、低頻度データブロックに設定しているブロックと、高頻度データブロックに設定しているブロックとを入れ替えている。これにより、各ブロックの書換頻度が平準化されるので、フラッシュメモリ２０の全体の寿命をさらに延ばすことができる。
【００３９】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、次の実施形態も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
【００４０】
たとえば、前述の実施形態では、データの退避を行う際、有効なデータか否かを、データに含まれている有効データフラグにより判断していた。すなわち、有効なデータか否かをそのデータに含まれている情報により判断していた。しかし、これに限られず、各ブロックのデータが有効か否かを記憶するテーブルをそれらのデータ外に記憶しておき、データ退避を行う際には、そのテーブルを参照して有効なデータを決定してもよい。
【００４１】
また、前述の実施形態では、低頻度データブロックと高頻度データブロックの入れ替えは、低頻度データブロックについて書換期間が経過した時点で行っていたが、これに加えて、低頻度データブロックが一杯になって他のブロックにデータを移す時点で、ブロックの種別の入れ替えを行ってもよい。
【符号の説明】
【００４２】
１０：制御装置、      １１：ＣＰＵ、      １２：ＲＯＭ、      １３：ＲＡＭ、      フラッシュメモリ２０、      ３０：バスライン
【図１】
2013029879.tif 000003
【図２】
2013029879.tif 000004
【図３】
2013029879.tif 000005