(57)【要約】【課題】データの保証年数を延ばすことが可能な構成でありながら、空き領域を増やす。【解決手段】  本実施形態の記憶装置は、データを格納するデータ格納場所として複数のブロック（７）を割り当てるように構成された不揮発性メモリ（５）を備えたものであって、データを格納するブロック（７）毎のデータの書換頻度に基づいて、前記データ格納場所に割り当てられた複数のブロック（７）のブロック数を変化させるブロック数変化部（２）を備えたものである。【選択図】図５
2018005764.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するデータ格納場所として複数のブロック（７）を割り当てるように構成された不揮発性メモリ（５）を備えた記憶装置（２）であって、
データを格納するブロック（７）毎のデータの書換頻度に基づいて、前記データ格納場所に割り当てられた複数のブロック（７）のブロック数を変化させるブロック数変化部（２）を備えた記憶装置。
【請求項２】
書換頻度算出タイミングになったか否かを判断する判断部（２）と、
書換頻度算出タイミングになった時点で、前記書換頻度を算出する書換頻度算出部（２）とを備えた請求項１記載の記憶装置。
【請求項３】
１つのデータについて、データの名称と、ブロック数と、データが格納されている複数のブロック（７）のブロック番号とが対応付けられた情報を複数備えて構成されたマッピングテーブル（６）を備え、
前記ブロック数変化部（２）は、前記書換頻度に基づいて前記マッピングテーブル（６）内の該当するデータのブロック数及びブロック番号を変更するように構成されていることを特徴とする請求項１または２記載の記憶装置。
【請求項４】
前記書換頻度と前記ブロック数とを対応させた頻度ブロック数テーブル（１５）を備え、
前記ブロック数変化部（２）は、前記書換頻度と前記頻度ブロック数テーブル（１５）とに基づいて前記ブロック数を変更するように構成されていることを特徴とする請求項１から３のいずれか一項記載の記憶装置。
【請求項５】
前記ブロック（７）には、前記ブロック番号を格納する領域と、前記ブロック数を格納する領域と、前記ブロックの書換回数を格納する領域とが設けられていることを特徴とする請求項１から４のいずれか一項記載の記憶装置。
【請求項６】
データを格納するデータ格納場所として複数のブロック（７）を割り当てるように構成された不揮発性メモリ（５）に対する記憶領域管理方法であって、
データを格納するブロック（７）毎のデータの書換頻度に基づいて、前記データ格納場所に割り当てられた複数のブロック（７）のブロック数を変化させることを特徴とする記憶領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリにデータを書き込む機能を備えた記憶装置及び記憶領域管理方法に関する。
【背景技術】
【０００２】
不揮発性メモリ例えばフラッシュメモリは、データの書き換えによりメモリとしての機能が低下するという特性があるため、書き換え回数の増加に伴い、書き込まれたデータの保証年数は減少する。この対策として、同じデータを書き込むデータ格納場所として複数のブロック（即ち、複数面）を確保し、データを書き換える際には、上記データ格納場所の複数のブロックの中でブロックを順番に書き換えていく構成が知られている。この構成によれば、１ブロックあたりの書き換え回数を減らすことができ、データの保証年数を延ばすことができる。
【０００３】
また、データの保証年数を更に延ばす構成として、データの書き換え回数に応じたデータ格納場所（即ち、複数のブロック）を入れ替える、即ち、書き換え回数の多いデータ格納場所と、書き換え回数の少ないデータ格納場所を入れ替える構成が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−３２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１の構成によれば、データの保証年数を延ばすことはできるが、不揮発性メモリの使用容量という観点で見ると、データ格納場所の入れ替え前後で変化しないため、空き容量も変化しない。車両に搭載される不揮発性メモリの場合、量産開始時点では、不揮発性メモリの空き領域に余裕があったとしても、その後、設計変更やソフトウェアアップデート等により不揮発性メモリに保存すべきデータが増加して、空き領域が不足することがある。このような場合、アップデートができなくなったり、不揮発性メモリを容量が大きいものに交換したりする必要があった。
【０００６】
本発明の目的は、データの保証年数を延ばすことが可能な構成でありながら、空き領域を増やすことができる記憶装置及び記憶領域管理方法を提供することにある。
【課題を解決するための手段】
【０００７】
請求項１の発明は、データを格納するデータ格納場所として複数のブロック（７）を割り当てるように構成された不揮発性メモリ（５）を備えた記憶装置（２）であって、データを格納するブロック（７）毎のデータの書換頻度に基づいて、前記データ格納場所に割り当てられた複数のブロック（７）のブロック数を変化させるブロック数変化部（２）を備えたところに特徴を有する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態を示す電子制御装置の機能ブロック図
【図２】フラッシュメモリのブロックのデータ構造を説明する図
【図３】マッピングテーブルの内容を説明する図
【図４】フラッシュメモリのデータ書換動作を説明する図（その１）
【図５】フラッシュメモリのデータ書換動作を説明する図（その２）
【図６】マッピングテーブルの内容を説明する図
【図７】データ書換制御のフローチャート
【図８】書換頻度算出制御のフローチャート
【図９】頻度ブロック数テーブルの内容を説明する図
【発明を実施するための形態】
【０００９】
（第１実施形態）
以下、第１実施形態について、図１ないし図９を参照して説明する。本実施形態の電子制御装置１は、例えば車両に搭載された各種のＥＣＵ（Electronic Control Unit）で構成されている。図１に示すように、電子制御装置１は、例えばマイコン２を有している。マイコン２は、構成要素の一部として、ＣＰＵ３、ＲＡＭ４、不揮発性メモリ例えばフラッシュメモリ５を備えている。マイコン２は、ブロック数変化部、判断部及び書換頻度算出部としての各機能を有している。
【００１０】
フラッシュメモリ５は、多数のブロック（即ち、データを格納するブロック）７を備えて構成されており、各ブロック７のサイズは例えば数キロバイト程度から数十キロバイト程度に設定されている。フラッシュメモリ５に書き込まれたデータの書き換えを行う際には、一旦各ブロック７単位のデータを消去した上で、新たなデータを書き込むことによりデータの書き換えが実行される構成となっている。尚、データの書き込みは、後述するセクタ単位で実行可能なように構成することが好ましい。
【００１１】
各ブロック７の具体的構成を、図２に示す。各ブロック７には、フラッシュメモリ５内における固有のアドレスがそれぞれ割り当てられている。ブロック７は、図２に示すように、セクタ８単位に分割されており、各セクタ８には、ブロック番号を格納する領域９、保持ブロック数（即ち、保持面数）を格納する領域１０、ブロックの書換回数を格納する領域１１、データを格納する領域１２が割当てられている。
【００１２】
ブロック番号は、各ブロック７を識別する情報であり、各ブロック７毎に異なる数値が与えられている。保持ブロック数は、自身のブロック７に格納されているデータと同じデータが格納されていく他のブロック７がいくつあるか、自身も含めたブロック数（即ち、面数と呼んでも良い）の数値である。ブロックの書換回数は、ブロック７が初期化（即ち、データが消去）された後、新たなデータが格納される際に、１ずつ加算される数値である。データ格納領域１２内には、データが格納されている。
【００１３】
ＲＡＭ４の内部には、マッピングテーブル６が設けられている。このマッピングテーブル６は、各データが格納されているブロック７のブロック番号（またはブロック７のアドレス）と保持ブロック数とを管理するために使用されるデータテーブルである。マッピングテーブル６には、図３に示すように、データ毎に、データの名称（即ち、データのＩＤ）、保持ブロック数、及び、データが格納されている複数のブロック７のブロック番号が記憶されている。尚、図３（ａ）は、初期状態のマッピングテーブル６の一例を示す。初期状態のマッピングテーブル６においては、保持ブロック数は全て例えば「６」である。そして、図３（ｂ）は、後述するようにして、書換頻度算出後において書換頻度に基づいて保持ブロック数を変更した状態のマッピングテーブル６の一例を示す。
【００１４】
また、ＣＰＵ３は、マイコン２ひいては電子制御装置１全体を制御する機能を有すると共に、各ブロック７の書換頻度を算出する機能と、各データの最適な保持ブロック数を算出する機能とを有する。
【００１５】
ここで、初期状態のマッピングテーブル６（図３（ａ）参照）に対応するフラッシュメモリ５のデータの格納処理（即ち、書き込み処理）について、図４に従って説明する。図４に示すように、３つのデータとして、例えばデータＡ、データＢ、データＣがあり、初期状態では、それぞれ保持ブロック数は例えば「６」である。即ち、各データを書き込むデータ格納場所として６個のブロック７を確保しており、各データＡ、Ｂ、Ｃは、書換要求がある度に、今までデータが書き込まれていたブロック７（即ち、今回ブロック）から、別のブロック７（即ち、次回ブロック）にデータを格納するブロックが変わっていく。この場合、保持ブロック数が「６」であるから、第１のブロック７（即ち、今回ブロック）→第２のブロック７（即ち、次回ブロック）→…→第６のブロック７→第１のブロック７とデータを格納するブロックが巡回するように構成されている。尚、図４に示すデータの格納処理においては、領域１３に入っているブロック７が空き領域１３のブロックである。
【００１６】
次に、保持ブロック数を変更した状態のマッピングテーブル６（図３（ｂ）参照）に対応するフラッシュメモリ５のデータの格納処理について、図５に従って説明する。この図５に示す状態において、データＡについては、書換頻度が普通程度であり、保持ブロック数を変更する必要はなく、保持ブロック数は「６」のままである。データＢについては、書換頻度が低く、保持ブロック数を少なくすることが可能であり、保持ブロック数を例えば「３」に変更している。データＣについては、書換頻度がかなり低く、保持ブロック数をより一層少なくすることが可能であり、保持ブロック数を例えば「２」に変更している。尚、図５に示すデータの格納処理においては、領域１４に入っているブロック７が空き領域１４のブロックである。この空き領域１４は、図４に示す初期状態の空き領域１３に比べて、７個のブロック７が増えている。
【００１７】
また、データの書換頻度が高い場合、例えばデータＡの書換頻度が高い場合には、保持ブロック数を多くする必要があることから、図６に示すように、保持ブロック数を例えば「１２」に変更するように構成されている。尚、保持ブロック数を多くするに際して、変更する数値は、上記「１２」に限られるものではなく、書換頻度に応じて適宜設定することが好ましい。
【００１８】
次に、上記構成の動作、即ち、フラッシュメモリ５にデータを書き込む際に実行する書換頻度を算出する制御並びに保持ブロック数を変更する制御について、図７及び図８を参照して説明する。尚、図７及び図８の各フローチャートは、マイコン２の制御の内容を示す。
【００１９】
まず、図７のステップＳ１０においては、マイコン２は、フラッシュメモリ５にデータを書き込む要求があったか否かを判断する。ここで、書き込む要求が無いときには、「ＮＯ」へ進み、本制御を終了する。また、上記ステップＳ１０において、書き込む要求があったときには（ＹＥＳ）、ステップＳ２０へ進み、マイコン２は、書き込み要求のあったデータが格納されているブロック７（即ち、そのデータを書き込むデータ格納場所としての保持ブロック数個の中の今回書き込む順番のブロック７）に、データを書き込むと共に、書換回数をカウントアップする。
【００２０】
続いて、ステップＳ３０へ進み、マイコン２は、書換頻度算出タイミングであるか否かを判断する。この場合、例えば車両の走行距離に基づいて書換頻度算出タイミングであるか否かを判断する、具体的には、前回書換頻度算出した時点の走行距離から例えば１０００ｋｍ加算した走行距離に到達した時点以降を、書換頻度算出タイミングであると判断する。
【００２１】
上記ステップＳ３０において、書換頻度算出タイミングでないときには、「ＮＯ」へ進み、本制御を終了する。また、上記ステップＳ３０において、書換頻度算出タイミングであるときには（ＹＥＳ）、ステップＳ４０へ進み、書換回数から書換頻度を算出する。この書換頻度の算出処理は、図８のフローチャートに示すサブルーチンによって実行される。以下、書換頻度の算出処理について、図８に従って説明する。
【００２２】
図８のステップＳ１１０においては、マイコン２は、車両の走行距離を取得する。この場合、マイコン２は、例えば、車両の走行距離を算出すると共に記憶しているＥＣＵから車載ＬＡＮ等を介して車両の走行距離のデータを受信して取得するように構成されている。続いて、ステップＳ１２０へ進み、マイコン２は、書き込み要求（即ち、書換要求）があったデータが格納されているブロック７の書換回数（即ち、領域１１のデータ）を読み出す。
【００２３】
次いで、ステップＳ１３０へ進み、マイコン２は、上記取得した走行距離と上記読み出した書換回数に基づいて書換頻度を算出する。この場合、例えば次の式で書換頻度を計算する。
【００２４】
書換頻度＝書換回数／走行距離
尚、データの内容によっては、車両情報、車両の制御状態の情報または過去の書換頻度の情報に基づいて、将来の書換頻度がどのように変化するかを推定することも可能である。例えば、アクチュエータの劣化を補正する補正値というデータの場合には、アクチュエータの使用年数や駆動回数が少ない初期段階であれば、補正値が変更となる頻度が少なく、比較的少ない書換頻度となるが、ある程度使用年数や駆動回数が多くなってくると、劣化速度も加速し、それに応じて補正値が変更となる頻度も増加する。このような特性があるデータの場合、将来的には更に書換頻度が大きくなると推定することができる。
【００２５】
そして、上記書換頻度の算出処理が完了すると、図８の制御を終了し、図７のステップＳ５０へ進む。このステップＳ５０においては、マイコン２は、書換頻度に基づいてデータ格納場所の最適な保持ブロック数を算出する。この場合、書換頻度が高いデータを格納するデータ格納場所については、最適な保持ブロック数を多くし、反対に、書換頻度が低いデータを格納するデータ格納場所については、最適な保持ブロック数を少なくする。
【００２６】
具体的には、図９に示すように、書換頻度と最適な保持ブロック数とを対応させた頻度ブロック数テーブル１５を予め作成してフラッシュメモリ５内に記憶しておき、ステップＳ４０で算出した書換頻度と上記頻度ブロック数テーブル１５とに基づいて保持ブロック数を決定（即ち、算出）する。尚、図９に示す頻度ブロック数テーブル１５は、一例であり、データの種類や内容、対象とする製品や部品等によって、保障期間や書換回数が変わることから、実験や試作等を行なうことにより、データ毎またはデータの分野や種類等毎に、頻度ブロック数テーブル１５を作成することが好ましい。
【００２７】
続いて、ステップＳ６０へ進み、マイコン２は、データが格納されているブロック７から読み出した保持ブロック数と、書換頻度から算出した最適な保持ブロック数が不一致であるか否かを判断する。ここで、読み出した保持ブロック数と、算出した最適な保持ブロック数が一致したときには、「ＮＯ」へ進み、本制御を終了する。
【００２８】
また、上記ステップＳ６０において、読み出した保持ブロック数と、算出した最適な保持ブロック数が不一致であるときには（ＹＥＳ）、ステップＳ７０へ進む。このステップＳ７０では、マイコン２は、データを格納する各ブロック７の保持ブロック数を変更すると共に、図３（ａ）、（ｂ）に示すマッピングテーブル６内において、該当するデータについて、保持ブロック数を変更し、更に、変更した保持ブロック数に合うように格納ブロック番号の割り当てを修正する。この場合、保持ブロック数が少なくなるときには、格納ブロック番号を少なくし（即ち、使用しないブロック番号は空きブロックに変更し）、保持ブロック数が多くなるときには、空いているブロック番号を追加して格納ブロック番号を多くする。これにより、本制御を終了する。
【００２９】
このような構成の本実施形態においては、データを格納するブロック７毎のデータの書換頻度に基づいて、データ格納場所に割り当てられた複数のブロック７のブロック数を変化させるように構成した。この構成によれば、書換頻度が低いデータについては、保持ブロック数を少なくすることができるから、それだけ、フラッシュメモリ５の空き領域１３、１４を増加させることができる。また、上記実施形態では、書換頻度が高いデータについては、保持ブロック数を多くすることができるから、データの保証年数を延ばすことができる。
【００３０】
また、上記実施形態では、書換頻度算出タイミングになったか否かを判断し、書換頻度算出タイミングになった時点で、データの書換頻度を算出するように構成したので、データの書換頻度を算出する回数、ひいては、データ格納場所に割り当てられた複数のブロック７のブロック数を変化させる回数を、多すぎず、また、少なすぎず、適切な回数に調整することができる。
【００３１】
また、上記実施形態では、１つのデータについて、データの名称と、ブロック数と、データが格納されている複数のブロック７のブロック番号とが対応付けられた情報を複数備えて構成されたマッピングテーブル６を備え、書換頻度に基づいてマッピングテーブル６内の該当するデータのブロック数及びブロック番号を変更するように構成したので、データ格納場所に割り当てられた複数のブロック７のブロック数を変化させる構成を、簡単且つ容易に実現することができる。
【００３２】
尚、上記実施形態では、前回書換頻度算出した時点の走行距離から例えば１０００ｋｍ増加した時点以降においてデータを書き換える時点を、書換頻度算出タイミングであると判断するように構成したが、これに限られるものではなく、例えば１０００ｋｍ未満の適当な距離、または、１０００ｋｍを越える適当な距離だけ増加した時点以降においてデータを書き換える時点を、書換頻度算出タイミングであると判断するように構成しても良い。また、走行距離の代わりに、前回書換頻度算出した時点から設定時間（例えば１週間または１か月等の時間）が経過した時点以降においてデータを書き換える時点を、書換頻度算出タイミングであると判断するように構成しても良い。
【００３３】
また、上記実施形態では、書換頻度に基づいて最適な保持ブロック数を算出するように構成したが、これに限られるものではなく、書換要求があった時点でのフラッシュメモリ５の空き領域の容量の条件を加味して、最適な保持ブロック数を設定するように構成しても良い。この構成の場合、例えば、空き領域の容量が多いときには、最適な保持ブロック数を多くし、空き領域の容量が少ないときには、最適な保持ブロック数を少なくする。
【００３４】
また、書換頻度の将来の変化を推定可能である場合には、推定した書換頻度に基づいて最適な保持ブロック数を設定するように構成しても良い。この構成の場合、書換頻度の増加が推定されるときには、最適な保持ブロック数を多くし、書換頻度の減少が推定されるときには、最適な保持ブロック数を少なくする。更に、過去の書換頻度の変化具合に基づいて、最適な保持ブロック数を設定するように構成しても良い。例えば、書換頻度が大きく増加する傾向にあるときには、最適な保持ブロック数をより一層多く設定し、書換頻度が大きく減少する傾向にあるときには、最適な保持ブロック数をより一層少なくする。
【００３５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３６】
図面中、１は電子制御装置、２はマイコン（ブロック数変化部、判断部、書換頻度算出部）、３はＣＰＵ、４はＲＡＭ、５はフラッシュメモリ（不揮発性メモリ）、６はマッピングテーブル、７はブロック、１３は空き領域、１４は空き領域、１５は頻度ブロック数テーブルである。
【図１】
2018005764.tif 000003
【図２】
2018005764.tif 000004
【図３】
2018005764.tif 000005
【図４】
2018005764.tif 000006
【図５】
2018005764.tif 000007
【図６】
2018005764.tif 000008
【図７】
2018005764.tif 000009
【図８】
2018005764.tif 000010
【図９】
2018005764.tif 000011