(57)【要約】【課題】メモリ領域を書込管理のために使用することなく、ＣＰＵ内蔵型のフラッシュメモリの書込みの効率化を図ることができる、フラッシュメモリを備えた制御装置及びフラッシュメモリへのデータ書込み方法を提供すること。【解決手段】書込み制御部４ａは、フラッシュメモリ２の２以上のブロックを組み合わせて構成された組み合わせブロックの各アドレスに対してデータの書込みを行うもので、組み合わせブロックにデータを書込む際、組み合わせブロックのアドレスの中に初期状態のアドレスが存在する場合には、先頭のアドレスにデータを書込み、初期状態のアドレスが存在しない場合には、次順の書込み対象となるブロックを初期化し、当該初期化されたブロックのアドレスの中の先頭のアドレスにデータを書込む。【選択図】図１
2010108436.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを備えた制御装置であって、
前記フラッシュメモリに対するデータの書込みを行う書込み制御手段を備え、
前記書込み制御手段は、
前記フラッシュメモリのデータ書込み領域を構成する複数のブロックの中から２以上のブロックを組み合わせて構成された組み合わせブロックの各アドレスに対してデータの書込みを行うものであって、前記組み合わせブロックを構成する前記２以上のブロックの各々を所定の順序で書込み対象とし、
前記組み合わせブロックにデータを書込む際、
前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在する場合には、当該初期状態のアドレスの中の先頭のアドレスに前記データを書込み、
前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在しない場合には、当該組み合わせブロックの中で次順の書込み対象となるブロックを初期化し、当該初期化されたブロックのアドレスの中の先頭のアドレスに前記データを書込むこと、
を特徴とするフラッシュメモリを備えた制御装置。
【請求項２】
前記書込み制御手段は、
前記データの書込みを行う毎に、当該データの書込みを行ったブロックの中で、当該データの書込みを行う以前にデータが書込まれたアドレスを０とすること、
を特徴とする請求項１に記載のフラッシュメモリを備えた制御装置。
【請求項３】
フラッシュメモリを備えた制御装置において当該フラッシュメモリに対するデータの書込みを行う際、前記フラッシュメモリのデータ書込み領域を構成する複数のブロックの中から２以上のブロックを組み合わせて構成された組み合わせブロックの各アドレスに対してデータの書込みを行うものであって、前記組み合わせブロックを構成する前記２以上のブロックの各々を所定の順序で書込み対象とするデータ書込み方法であって、
前記組み合わせブロックにデータを書込む際、
前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在する場合には、当該初期状態のアドレスの中の先頭のアドレスに前記データを書込むステップと、
前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在しない場合には、当該組み合わせブロックの中で次順の書込み対象となるブロックを初期化し、当該初期化されたブロックのアドレスの中の先頭のアドレスに前記データを書込むステップと、
を含むことを特徴とするフラッシュメモリへのデータ書込み方法。
【請求項４】
前記各ステップにおいてデータの書込みを行う毎に、当該データの書込みを行ったブロックの中で、当該データの書込みを行う以前にデータが書込まれたアドレスを０とすること、
を特徴とする請求項３に記載のフラッシュメモリへのデータ書込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを備えた制御装置、及びこのような制御装置におけるフラッシュメモリへのデータ書込み方法に関する。
【背景技術】
【０００２】
プログラムや初期データを保存するフラッシュメモリを内蔵したＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いた各種の装置においては、当該装置にインストールされた各種のアプリケーションプログラムからフラッシュメモリの書き換えを行うセルフプログラミングが可能である。
【０００３】
ここで、フラッシュメモリへの書込回数には製造メーカーによる保証値（制限値）があり、例えば、一般的なフラッシュメモリへの保証値は数万から２０万回程度であり、ＣＰＵ内蔵型のフラッシュメモリへの保証値は１０００回（ＭＩＮ値）程度となっている。従って、特にＣＰＵ内蔵型のフラッシュメモリに関しては、比較的低頻度での書込みで足りるデータ（例えば、製造時に書込まれる装置動作設定データや、アドレス等のように装置に固有のデータ）のみを記憶させることが好ましく、高頻度での書込みが必要となるデータ（例えば、装置の動作状態データ）を記憶させる用途に使用することには不向きであった。
【０００４】
このような問題を解決するためには、ＣＰＵ内蔵型のフラッシュメモリの書込みの効率化を図り、所望のデータ量を最小限の書込回数で書込むことを可能とすることで、フラッシュメモリの実質的な寿命を延長することが好ましい。例えば、特許文献１には、フラッシュメモリ群中の一部の未使用領域を利用し、該未使用領域に再書込み処理をプログラム記述し、ブート時にこの再書込み処理を実施することで、フラッシュメモリの書込回数の平準化を図り、フラッシュメモリの製品寿命を延長することが開示されている。
【０００５】
【特許文献１】特開２００８−１７１２４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のように、フラッシュメモリのメモリ領域を利用して書込効率を向上させる方法では、メモリ領域を書込管理のために使用することになり、メモリの使用効率が低下するため好ましくない。
【０００７】
本発明は、上記に鑑みてなされたものであって、メモリ領域を書込管理のために使用することなく、ＣＰＵ内蔵型のフラッシュメモリの書込みの効率化を図ることができる、フラッシュメモリを備えた制御装置及びフラッシュメモリへのデータ書込み方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、請求項１に記載のフラッシュメモリを備えた制御装置は、前記フラッシュメモリに対するデータの書込みを行う書込み制御手段を備え、前記書込み制御手段は、前記フラッシュメモリのデータ書込み領域を構成する複数のブロックの中から２以上のブロックを組み合わせて構成された組み合わせブロックの各アドレスに対してデータの書込みを行うものであって、前記組み合わせブロックを構成する前記２以上のブロックの各々を所定の順序で書込み対象とし、前記組み合わせブロックにデータを書込む際、前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在する場合には、当該初期状態のアドレスの中の先頭のアドレスに前記データを書込み、前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在しない場合には、当該組み合わせブロックの中で次順の書込み対象となるブロックを初期化し、当該初期化されたブロックのアドレスの中の先頭のアドレスに前記データを書込むことを特徴とする。
【０００９】
また、請求項２に記載のフラッシュメモリを備えた制御装置は、請求項１に記載のフラッシュメモリを備えた制御装置において、前記書込み制御手段は、前記データの書込みを行う毎に、当該データの書込みを行ったブロックの中で、当該データの書込みを行う以前にデータが書込まれたアドレスを０とすることを特徴とする。
【００１０】
また、請求項３に記載のフラッシュメモリへのデータ書込み方法は、フラッシュメモリを備えた制御装置において当該フラッシュメモリに対するデータの書込みを行う際、前記フラッシュメモリのデータ書込み領域を構成する複数のブロックの中から２以上のブロックを組み合わせて構成された組み合わせブロックの各アドレスに対してデータの書込みを行うものであって、前記組み合わせブロックを構成する前記２以上のブロックの各々を所定の順序で書込み対象とするデータ書込み方法であって、前記組み合わせブロックにデータを書込む際、前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在する場合には、当該初期状態のアドレスの中の先頭のアドレスに前記データを書込むステップと、前記組み合わせブロックのアドレスの中に、初期状態のアドレスが存在しない場合には、当該組み合わせブロックの中で次順の書込み対象となるブロックを初期化し、当該初期化されたブロックのアドレスの中の先頭のアドレスに前記データを書込むステップとを含むことを特徴とする。
【００１１】
また、請求項４に記載のフラッシュメモリへのデータ書込み方法は、請求項３に記載のフラッシュメモリへのデータ書込み方法において、前記各ステップにおいてデータの書込みを行う毎に、当該データの書込みを行ったブロックの中で、当該データの書込みを行う以前にデータが書込まれたアドレスを０とすることを特徴とする。
【発明の効果】
【００１２】
請求項１に記載のフラッシュメモリを備えた制御装置又は請求項３に記載のフラッシュメモリへのデータ書込み方法によれば、組み合わせブロックのアドレスに対して先頭から順次データを書込み、初期状態のアドレスが存在しなくなった場合にのみ、次順の書込み対象となるブロックを初期化するので、組み合わせブロックを構成する各ブロックの各アドレスの全てをデータ書込みに使用でき、データ書込みに使用しないアドレスを残したままブロックの初期化を行うことを防止できるので、ブロックの初期化を最小限に留めることができ、フラッシュメモリの寿命を延ばすことが可能となる。特に、メモリ領域を書込管理のために使用する必要がないので、メモリの使用効率を低下させることなく、フラッシュメモリの書込みの効率化を図ることができる。
【００１３】
請求項２に記載のフラッシュメモリを備えた制御装置又は請求項４に記載のフラッシュメモリへのデータ書込み方法によれば、データの書込みを行う以前にデータが書込まれたアドレスを０とするので、書込みデータが初期化データと同じである場合にも、アドレス０の次のアドレスが最後に書込みを行ったアドレスであることを容易かつ確実に識別できるので、フラッシュメモリの書込みの効率化を図ることができる。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明に係るフラッシュメモリを備えた制御装置及びフラッシュメモリへのデータ書込み方法の一実施の形態を詳細に説明する。ただし、この実施の形態によって本発明が限定されるものではない。
【００１５】
〔構成〕
最初に、本実施の形態に係るＣＰＵの構成について説明する。図１は、本実施の形態に係るＣＰＵを機能概念的に示すブロック図である。このＣＰＵ１は、フラッシュメモリ内蔵型ＣＰＵであり、特許請求の範囲における制御装置に対応するものであって、フラッシュメモリ２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３、及び制御部４を、内部バスにて通信可能に接続して構成されている。
【００１６】
フラッシュメモリ２は、プログラムや初期データを不揮発的に書込むものである。図２は、フラッシュメモリ２の論理的構成を示す図である。例えば、フラッシュメモリ２は、全体で１Ｋバイトの記憶領域を有し、各々が２５６バイトの４つのブロック０〜３を備える。このフラッシュメモリ２は、ブロック単位のみで初期化（消去）が可能であり、各ブロック０からブロック３における全バイト（全アドレス）を初期値＝ＦＦＨにすることで、１バイト毎の書込みが可能となる。図３には、ブロック０及びブロック１の初期化後の状態におけるフラッシュメモリ２の要部の物理的構成を示す。ここでは、ブロック０及びブロック１の全バイトにＦＦＨが書込まれている。
【００１７】
図１において、ＲＡＭ３は、ＣＰＵ１において実行される各処理の一時的なデータを不揮発的に書込む。制御部４は、ＣＰＵ１の各部を制御する制御手段であり、機能概念的に書込み制御部４ａを備える。この書込み制御部４ａは、フラッシュメモリ２に対するデータの書込みを制御するもので、特許請求の範囲における書込み制御手段に対応する。具体的には、制御部４は、演算器やレジスタ等の如き回路素子や、当該ＣＰＵ１の上で解釈実行される各種のプログラム（ＯＳなどの基本制御プログラムや、ＯＳ上で起動され特定機能を実現するアプリケーションプログラムを含む）にて構成される。また、請求項３又は４に係る方法をコンピュータとしてのＣＰＵ１に実行させるためのデータ書込みプログラムが、任意の記録媒体又はネットワークを介してＣＰＵ１にインストールされることで、制御部４及び書込み制御部４ａを構成する。
【００１８】
〔処理〕
次に、書込み制御部４ａによって実行されるデータの書込み制御処理について説明する。この処理では、２ブロック以上のブロックを組み合わせて順番にデータ書込みに使用することで、各ブロック内へのデータ書込回数を均一化し、見た目の書込回数を低減する。このように複数のブロックを組み合わせて構成されるブロックを「組み合わせブロック」と称する。以下では、ブロック０とブロック１によって組み合わせブロックを構成する例であって、これらブロック０とブロック１の全てのアドレスにＦＦＨが書込まれている初期化後の状態から、当該ブロック０とブロック１に任意のデータを書込む例について説明する。
【００１９】
図４は、データの書込み制御処理のフローチャート、図５から図１２は、データの書込み制御処理の各時点におけるブロック０とブロック１の全部又は要部のレコードの物理的構成を示す図である。１回目のデータ書込み時、書込み制御部４ａは、書込み対象となるブロックのアドレスに初期状態のアドレスがあるか否かを判定する(ステップＳＡ−１）。書込み対象となるブロックは、例えば、組み合わせブロックを構成するブロック０とブロック１の書込み順序を予め設定しておくことで判定する。この例では、最初に書込み対象となるブロック０の全てのアドレスが初期状態であるため(ステップＳＡ−１、Ｙｅｓ）、当該ブロック０における初期状態のアドレスの中で先頭のアドレスであるアドレス０００Ｈにデータを書込む（ステップＳＡ−２）。図５には、ブロック０のアドレス０００Ｈにデータ０００００００Ｂ（＝８０Ｈ）を書込んだ状態のレコードを例示する。その後、書込み制御部４ａは、それ以前にデータを書込んだアドレスがあるか否かを判定する（ステップＳＡ−３）。この例では、それ以前にデータを書込んだアドレスは未だないため（ステップＳＡ−３、Ｎｏ）、ステップＳＡ−１に戻る。
【００２０】
このステップＳＡ−１において、２回目のデータ書込み時、書込み制御部４ａは、書込み対象となるブロックのアドレスに初期状態のアドレスがあるか否かを判定する(ステップＳＡ−１）。この例では、書込み対象となるブロック０に初期状態のアドレスが残っているため(ステップＳＡ−１、Ｙｅｓ）、当該ブロック０における初期状態のアドレスの中で先頭のアドレスであるアドレス００１Ｈにデータを書込む（ステップＳＡ−２）。また、書込み制御部４ａは、それ以前にデータを書込んだアドレスがあるか否かを判定する（ステップＳＡ−３）。この例では、先のステップＳＡ−２でデータを書込んだアドレス０００Ｈがあるため（ステップＳＡ−３、Ｙｅｓ）、このアドレス０００Ｈを０にする（ステップＳＡ−４）。図６には、アドレス００１Ｈにデータ００００００１Ｂ（＝８１Ｈ）を書込むと共に、アドレス０００Ｈを０とした状態のレコードを例示する。
【００２１】
３回目のデータ書込み時、書込み制御部４ａは、書込み対象となるブロックのアドレスに初期状態のアドレスがあるか否かを判定する(ステップＳＡ−１）。この例では、書込み対象となるブロック０に初期状態のアドレスが残っているため(ステップＳＡ−１、Ｙｅｓ）、当該ブロック０における初期状態のアドレスの中で先頭のアドレスであるアドレス００２Ｈにデータを書込む（ステップＳＡ−２）。また、書込み制御部４ａは、それ以前にデータを書込んだアドレスがあるか否かを判定する（ステップＳＡ−３）。この例では、それ以前にデータを書込んだアドレス００１Ｈがあるため（ステップＳＡ−３、Ｙｅｓ）、このアドレス００１Ｈを０にする（ステップＳＡ−４）。図７には、アドレス００２Ｈにデータ１１１１１１１Ｂ（＝ＦＦＨ）を書込むと共に、アドレス００１Ｈを０とした状態のレコードを例示する。特に、このように初期値と同じＦＦＨをデータとして書込んだ場合には、次のステップＳＡ−１における初期状態の先頭アドレスの判定が困難になる。この問題を回避するため、本実施の形態では、これまで説明したように、それ以前にデータを書込んだアドレスを０にすることで、先頭アドレスの判定を可能としている。すなわち、ステップＳＡ−１、ＳＡ−２では、アドレス＝０の次のアドレスを探すことで、当該アドレスが次にデータを書込むべきアドレスであることが判る。ただし、初期値と同じＦＦＨをデータとして書込む可能性がない場合や、他の方法によって次にデータを書込むべきアドレスが特定できる場合には、ステップＳＡ−３、ＳＡ−４を省略してもよい。
【００２２】
以降、書込み制御部４ａは、データの書込みを行う毎に、書込み対象となるブロックにおける初期状態のアドレスの中で先頭のアドレスにデータを書込むと共に、それ以前にデータを書込んだアドレスが存在する場合には当該アドレスを０にする。図８にはブロック０の最後のアドレス０９ＦＨにデータ０００００００Ｂ（＝８０Ｈ）を書込むと共に、それ以前の全てのアドレス０００Ｈ〜０９ＥＨを０とした状態のブロック０及びブロック１を例示する。その後、書込み制御部４ａは、書込み対象となるブロックを次順のブロック１に移し、同様にデータの書込みを行う。図９にはブロック１の最後のアドレス１９ＦＨにデータ０００００００Ｂ（＝８０Ｈ）を書込むと共に、それ以前の全てのアドレス０００Ｈ〜１９ＥＨを０とした状態のブロック０及びブロック１を例示する。
【００２３】
その後、書込み制御部４ａは、書込み対象となるブロック１に初期状態のアドレスが残っていないことから（ステップＳＡ−１、Ｎｏ）、次に書込み対象となるブロック０をブロック単位で初期化し（ステップＳＡ−５）、当該初期化を行ったブロック０を書込み対象とした上で、再びステップＳＡ−１に戻ってデータの書込みを行う。図１０にはブロック０を初期化した状態のブロック０及びブロック１を例示し、図１１にはブロック０の先頭のアドレス０００Ｈにデータ０００００００Ｂ（＝８０Ｈ）を書込んだ状態のブロック０及びブロック１を例示する。以降、同様にステップＳＡ−１からＳＳＡ−４を繰り返し、ブロック０の各アドレスに順次データの書込みを行なう。図１２にはブロック０の最後のアドレス０９ＦＨにデータ０００００００Ｂ（＝８０Ｈ）を書込むと共に、それ以前の全てのアドレス０００Ｈ〜０９ＥＨを０とした状態のブロック０及びブロック１を例示する。そして、次に書込み対象となるブロック１をブロック単位で初期化することで（ステップＳＡ−５）、図８の状態に戻り、以降、ブロック０又はブロック１の書込回数が保証値になる迄、データの書込みを繰り返すことができる。
【００２４】
〔効果〕
これまで説明したように本実施の形態によれば、組み合わせブロックのアドレスに対して先頭から順次データを書込み、初期状態のアドレスが存在しなくなった場合にのみ、次順の書込み対象となるブロックを初期化するので、組み合わせブロックを構成する各ブロックの各アドレスの全てをデータ書込みに使用でき、データ書込みに使用しないアドレスを残したままブロックの初期化を行うことを防止できるので、ブロックの初期化を最小限に留めることができ、フラッシュメモリ２の寿命を延ばすことが可能となる。特に、メモリ領域を書込管理のために使用する必要がないので、メモリの使用効率を低下させることなく、フラッシュメモリ２の書込みの効率化を図ることができる。
【００２５】
また、データの書込みを行う以前にデータが書込まれたアドレスがある場合には当該アドレスを０とするので、書込みデータが初期化データと同じである場合にも、アドレス０の次のアドレスが最後に書込みを行ったアドレスであることを容易かつ確実に識別できるので、フラッシュメモリ２の書込みの効率化を図ることができる。
【００２６】
〔変形例〕
以上、本発明の一実施の形態について説明したが、本発明の具体的な構成及び手段は、特許請求の範囲に記載した各発明の技術的思想の範囲内において、任意に改変及び改良することができる。以下、このような変形例の一部について説明する。
【００２７】
（解決しようとする課題や発明の効果について）
まず、発明が解決しようとする課題や発明の効果は、前記した内容に限定されるものではなく、本発明によって、前記に記載されていない課題を解決したり、前記に記載されていない効果を奏することもでき、また、記載されている課題の一部のみを解決したり、記載されている効果の一部のみを奏することがある。
【００２８】
（組み合わせブロックの構成について）
上記実施の形態では、連続する２つのブロックを用いて組み合わせブロックを構成しているが、組み合わせブロックを構成するブロックの数は、２つ以上であれば任意である。また、連続するブロックに限らず、相互に離れた位置にある複数のブロックを用いて組み合わせブロックを構成してもよい。
上記実施の形態では、１バイト毎の書込みで７ビットのデータを記録しているが、データのサイズは１バイト以上の任意のサイズであってもよい。例えば、連続する２バイトのアドレス単位を書き込みに使用する構成の場合、１５ビットのデータを記録することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施の形態に係るＣＰＵを機能概念的に示すブロック図である。
【図２】フラッシュメモリの論理的構成を示す図である。
【図３】初期化後の状態におけるフラッシュメモリのブロックの物理的構成を示す図である。
【図４】データの書込み制御処理のフローチャートである。
【図５】データの書込み制御処理の初期時点におけるブロックの要部のレコードの物理的構成を示す図である。
【図６】データの書込み制御処理の図５に続く時点におけるブロックの要部のレコードの物理的構成を示す図である。
【図７】データの書込み制御処理の図６に続く時点におけるブロックの要部のレコードの物理的構成を示す図である。
【図８】データの書込み制御処理の図７に続く時点におけるブロックの物理的構成を示す図である。
【図９】データの書込み制御処理の図８に続く時点におけるブロックの物理的構成を示す図である。
【図１０】データの書込み制御処理の図９に続く時点におけるブロックの物理的構成を示す図である。
【図１１】データの書込み制御処理の図１０に続く時点におけるブロックの物理的構成を示す図である。
【図１２】データの書込み制御処理の図１１に続く時点におけるブロックの物理的構成を示す図である。
【符号の説明】
【００３０】
１  ＣＰＵ
２  フラッシュメモリ
３  ＲＡＭ
４  制御部
４ａ  書込み制御部
【図１】
2010108436.tif 000003
【図２】
2010108436.tif 000004
【図３】
2010108436.tif 000005
【図４】
2010108436.tif 000006
【図５】
2010108436.tif 000007
【図６】
2010108436.tif 000008
【図７】
2010108436.tif 000009
【図８】
2010108436.tif 000010
【図９】
2010108436.tif 000011
【図１０】
2010108436.tif 000012
【図１１】
2010108436.tif 000013
【図１２】
2010108436.tif 000014