(57)【要約】【課題】書き込み禁止時間を短くするとともに、フラッシュメモリへデータを書き込む回数を少なくする。【解決手段】本発明に係る半導体装置１００は、複数のセクタ２００の各々が、データの書き込みの対象となる使用中状態であるか、データが書き込まれた後の使用済み状態であるか、データ消去済みの未使用状態であるかを管理するセクタ管理部１２３と、複数項目の各々に対して、当該項目の最新のデータが前記使用済み状態のセクタに格納されている有効状態であるか、当該項目の最新のデータが前記使用中状態のセクタに格納されている無効状態であるかを管理するデータ管理部１２６と、使用中状態のセクタ２００Ｂの空き容量が設定値２３０以下になった場合に、使用済み状態のセクタ２００Ａに格納されている、有効状態の項目の最新のデータを、使用中状態のセクタ２００Ｂへ転送する転送部１２２とを備える。【選択図】図１
2012203877.tif 000002
【特許請求の範囲】
【請求項１】
消去単位である複数のセクタを有するフラッシュメモリを備え、前記フラッシュメモリに複数項目のデータを記憶する半導体装置であって、
前記複数のセクタの各々が、データの書き込みの対象となる使用中状態であるか、データが書き込まれた後の使用済み状態であるか、データが書き込まれていない未使用状態であるかを管理するセクタ管理部と、
同一項目のデータを更新する際、更新前の古いデータを前記使用中状態又は前記使用済み状態のセクタに格納したまま、前記使用中状態のセクタに更新後の新しいデータを書き込む書き込み部と、
前記複数項目の各々に対して、当該項目の最新のデータが前記使用済み状態のセクタに格納されている有効状態であるか、当該項目の最新のデータが前記使用中状態のセクタに格納されている無効状態であるかを管理するデータ管理部とを備え、
前記セクタ管理部は、使用中状態の第１セクタに空き容量が無くなった場合に、当該第１セクタを使用済み状態に変更するとともに、未使用状態の第２セクタを使用中状態に変更し、
前記半導体装置は、さらに、
前記使用中状態の第２セクタの空き容量が第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている、前記有効状態の項目の最新のデータである有効データを、前記使用中状態の第２セクタへ転送する転送処理を行う転送部と、
前記転送処理の後、前記使用済み状態の第１セクタのデータを消去する消去部とを備える
半導体装置。
【請求項２】
前記転送部は、前記使用中状態の第２セクタの空き容量が前記第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている有効データの一部を、前記使用中状態の第２セクタへ転送し、
前記転送部は、さらに、前記使用中状態の第２セクタの空き容量が前記第１設定値より小さい第２設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている有効データの全てを、前記使用中状態の第２セクタへ転送する
請求項１記載の半導体装置。
【請求項３】
前記転送部は、前記使用中状態の第２セクタの空き容量が前記第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている有効データのうち、前記第２設定値を超えるデータ量のデータを、前記使用中状態の第２セクタへ転送する
請求項２記載の半導体装置。
【請求項４】
前記転送部は、前記使用済み状態の第２セクタに格納されている有効データの合計データ量である未転送データ量を前記第１設定値として用い、前記使用中状態の第２セクタの空き容量が、前記未転送データ量に一致した場合に前記転送処理を行う
請求項１記載の半導体装置。
【請求項５】
前記セクタ管理部は、前記複数のセクタの各々に、当該セクタが前記使用中状態であるか、前記使用済み状態であるか、前記未使用状態であるか、を示すセクタ管理情報を記憶し、
前記データ管理部は、前記複数のセクタの各々に、前記複数項目の各々が前記有効状態であるか、前記無効状態であるかを示すデータ管理情報を記憶する
請求項１〜４のいずれか１項に記載の半導体装置。
【請求項６】
前記第１設定値は、前記複数項目のデータの合計のデータ量から前記フラッシュメモリの最小書き込み単位分のデータ量を減算した値である
請求項１記載の半導体装置。
【請求項７】
前記第１設定値は、前記複数項目のデータの合計のデータ量から、当該複数項目のデータのうち最小のデータのデータ量を減算した値である
請求項１記載の半導体装置。
【請求項８】
バッテリーの状況を示すデータを取得するデータ取得部と、
前記データを記録する、請求項１〜４、６及び７のいずれか１項に記載の半導体装置とを備える
バッテリー監視装置。
【請求項９】
消去単位である複数のセクタを有するフラッシュメモリに複数項目のデータを記憶するデータ書き込み方法であって、
前記複数のセクタの各々が、データの書き込みの対象となる使用中状態であるか、データが書き込まれた後の使用済み状態であるか、データ消去済みの未使用状態であるかを管理するセクタ管理ステップと、
同一項目のデータを更新する際、更新前の古いデータを前記使用中状態又は前記使用済み状態のセクタに格納したまま、前記使用中状態のセクタに更新後の新しいデータを書き込む書き込みステップと、
前記複数項目の各々に対して、当該項目の最新のデータが前記使用済み状態のセクタに格納されている有効状態であるか、当該項目の最新のデータが前記使用中状態のセクタに格納されている無効状態であるかを管理するデータ管理ステップとを含み、
前記セクタ管理ステップでは、使用中状態の第１セクタに空き容量が無くなった場合に、当該第１セクタを使用済み状態に変更するとともに、未使用状態の第２セクタを使用中状態に変更し、
前記データ書き込み方法は、さらに、
前記使用中状態の第２セクタの空き容量が第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている、前記有効状態の項目の最新のデータである有効データを、前記使用中状態の第２セクタへ転送する転送処理を行う転送ステップと、
前記転送処理の後、前記使用済み状態の第１セクタのデータを消去する消去ステップとを含む
データ書き込み方法。
【請求項１０】
請求項９記載のデータ書き込み方法をコンピュータに実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、バッテリー監視装置、及びデータ書き込み方法に関し、特に、フラッシュメモリを備える半導体装置及びフラッシュメモリへのデータ書き込み方法に関する。
【背景技術】
【０００２】
マイコンのフラッシュＲＯＭ化が進み、従来マイコンの外部に設けられていたＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）を、マイコン内蔵のフラッシュＲＯＭで代用するケースが増加している。
【０００３】
フラッシュＲＯＭによるＥＥＰＲＯＭ機能の代用は、冷蔵庫及びエアコンなどの家電製品で使用され始めている。このフラッシュＲＯＭは、主に運転時間の累計データの保持と、故障発生時のシステム環境の保持とに利用される。この故障発生時のシステム環境は、製品修理時などの解析に用いられる。
【０００４】
ここでフラッシュＲＯＭについて説明する。フラッシュＲＯＭは、複数のセクタで構成される。また、それぞれのセクタは一定量のＲＯＭ領域を有する。
【０００５】
また、フラッシュＲＯＭの動作特徴として、フラッシュＲＯＭへのデータ書き込みは１ｂｙｔｅ単位で可能であるが、消去は１セクタ単位でしか実施することができない。よって、書き込んだデータを書き換えるためには、一旦書き換え対象のセクタ全体のデータを退避した上でデータの書き換えを行い、さらに書き換え対象のセクタ全体を一度消去してから、データの書き換えを終えた１セクタ分のデータをフラッシュＲＯＭへ書き込む必要がある。
【０００６】
ただし、このような方法を用いることは、タスクと書き込み回数との制限から現実的ではない。そのため、フラッシュＲＯＭでは、あるデータが更新されてデータ内容を書換える場合は、空き容量に重複してデータを書き込み、データを読み込む際には重複して書き込んだデータのうち、最後に書き込まれたデータを読み取ることが行われている（例えば、特許文献１参照）。
【０００７】
フラッシュＲＯＭによるＥＥＰＲＯＭ機能の代用は、特許文献１のように１つのＲＯＭ領域内に管理領域とデータ領域とを構成することで実現される。管理領域内のヘッダ情報は使用中状態、使用済み状態、及び未使用状態の３つの状態を持つ。これにより、ＥＥＰＲＯＭ機能の制御が行われる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平９−９７２０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
このようなフラッシュＲＯＭ（フラッシュメモリ）を含む半導体装置では、使用中状態のセクタの空き容量がなくなった場合、データの消去が必要となる。しかしながら、フラッシュＲＯＭの特性として上述したようにセクタ単位での消去しか実施できないため、書き込んだデータを全て消去する必要がある。そのため、消去を実行する前に、別のセクタへ最新データを転送する必要がある。そして、このデータ転送中はユーザーからの書き込み処理は行えない。このため、ユーザーの書き込み禁止時間が存在するという課題がある。
【００１０】
また、データ転送を行うことにより、同じデータを両セクタに書き込むこととなる。これにより、フラッシュメモリへデータを書き込む回数が増加するという課題がある。
【００１１】
そこで、本発明は上記課題を解決するもので、書き込み禁止時間を短くできるとともに、フラッシュメモリへデータを書き込む回数を少なくできる半導体装置、バッテリー監視装置及びデータ書き込み方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の一形態に係る半導体装置は、消去単位である複数のセクタを有するフラッシュメモリを備え、前記フラッシュメモリに複数項目のデータを記憶する半導体装置であって、前記複数のセクタの各々が、データの書き込みの対象となる使用中状態であるか、データが書き込まれた後の使用済み状態であるか、データが書き込まれていない未使用状態であるかを管理するセクタ管理部と、同一項目のデータを更新する際、更新前の古いデータを前記使用中状態又は前記使用済み状態のセクタに格納したまま、前記使用中状態のセクタに更新後の新しいデータを書き込む書き込み部と、前記複数項目の各々に対して、当該項目の最新のデータが前記使用済み状態のセクタに格納されている有効状態であるか、当該項目の最新のデータが前記使用中状態のセクタに格納されている無効状態であるかを管理するデータ管理部とを備え、前記セクタ管理部は、使用中状態の第１セクタに空き容量が無くなった場合に、当該第１セクタを使用済み状態に変更するとともに、未使用状態の第２セクタを使用中状態に変更し、前記半導体装置は、さらに、前記使用中状態の第２セクタの空き容量が第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている、前記有効状態の項目の最新のデータである有効データを、前記使用中状態の第２セクタへ転送する転送処理を行う転送部と、前記転送処理の後、前記使用済み状態の第１セクタのデータを消去する消去部とを備える。
【００１３】
このような構成により、本発明の一形態に係る半導体装置は、使用中状態のセクタに書き込みが行われた項目のデータを無効として扱い、当該項目のデータは転送処理において使用中状態のセクタに転送しない。これにより、当該半導体装置は、転送処理におけるデータ量を削減できるので、書き込み禁止時間を短くできる。また、当該半導体装置は、重複したデータの書き込みを削減できるためフラッシュメモリの書き込み回数を少なくできる。
【００１４】
また、前記転送部は、前記使用中状態の第２セクタの空き容量が前記第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている有効データの一部を、前記使用中状態の第２セクタへ転送し、前記転送部は、さらに、前記使用中状態の第２セクタの空き容量が前記第１設定値より小さい第２設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている有効データの全てを、前記使用中状態の第２セクタへ転送してもよい。
【００１５】
このような構成により、本発明の一形態に係る半導体装置は、最後にデータ転送を行う時期を遅らすことができる。よって、有効データと同項目のデータが使用中状態のセクタに書き込まれる確率が上がる。これにより、本発明の一形態に係る半導体装置は、さらに、データ転送量を削減できるので、さらに、書き込み禁止時間を短くできるとともに、フラッシュメモリへデータを書き込む回数を少なくできる。
【００１６】
また、前記転送部は、前記使用中状態の第２セクタの空き容量が前記第１設定値以下になった場合に、前記使用済み状態の第１セクタに格納されている有効データのうち、前記第２設定値を超えるデータ量のデータを、前記使用中状態の第２セクタへ転送してもよい。
【００１７】
このような構成により、本発明の一形態に係る半導体装置は、使用中状態のセクタに、確実に全ての有効データを転送できる。
【００１８】
また、前記転送部は、前記使用済み状態の第２セクタに格納されている有効データの合計データ量である未転送データ量を前記第１設定値として用い、前記使用中状態の第２セクタの空き容量が、前記未転送データ量に一致した場合に前記転送処理を行ってもよい。
【００１９】
このような構成により、本発明の一形態に係る半導体装置は、データ転送を行う時期を遅らすことができるので、有効データと同項目のデータが使用中状態のセクタに書き込まれる確率が上がる。これにより、本発明の一形態に係る半導体装置は、さらに、データ転送量を削減できるので、さらに、書き込み禁止時間を短くできるとともに、フラッシュメモリへデータを書き込む回数を少なくできる。
【００２０】
また、前記セクタ管理部は、前記複数のセクタの各々に、当該セクタが前記使用中状態であるか、前記使用済み状態であるか、前記未使用状態であるか、を示すセクタ管理情報を記憶し、前記データ管理部は、前記複数のセクタの各々に、前記複数項目の各々が前記有効状態であるか、前記無効状態であるかを示すデータ管理情報を記憶してもよい。
【００２１】
このような構成により、本発明の一形態に係る半導体装置は、セクタのデータ消去と同時に、セクタ管理情報及びデータ管理情報を変更できる。
【００２２】
また、前記第１設定値は、前記複数項目のデータの合計のデータ量から前記フラッシュメモリの最小書き込み単位分のデータ量を減算した値であってもよい。
【００２３】
このような構成により、本発明の一形態に係る半導体装置は、使用中状態のセクタに、確実に全ての有効データを転送できる。
【００２４】
また、前記第１設定値は、前記複数項目のデータの合計のデータ量から、当該複数項目のデータのうち最小のデータのデータ量を減算した値であってもよい。
【００２５】
また、本発明の一形態に係るバッテリー監視装置は、バッテリーの状況を示すデータを取得するデータ取得部と、前記データを記録する、前記半導体装置とを備えてもよい。
【００２６】
このような構成により、本発明の一形態に係るバッテリー監視装置は、ＥＥＰＲＯＭの代替としてフラッシュメモリを使用することができるので、当該バッテリー監視装置のコストを削減できる。
【００２７】
なお、本発明は、このような半導体装置及びバッテリー監視装置として実現できるだけでなく、半導体装置及びバッテリー監視装置に含まれる特徴的な手段をステップとするデータ書き込み方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の非一時的なコンピュータ読み取り可能な記録媒体、及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【００２８】
さらに、本発明は、このような半導体装置及びバッテリー監視装置の機能の一部又は全てを実現する半導体集積回路（ＬＳＩ）として実現できる。
【発明の効果】
【００２９】
本発明は、書き込み禁止時間を短くできるとともに、フラッシュメモリへデータを書き込む回数を少なくできる半導体装置、バッテリー監視装置及びデータ書き込み方法を提供できる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態１に係る半導体装置のブロック図である。
【図２】本発明の実施の形態１に係るフラッシュメモリの構成を示す図である。
【図３】本発明の実施の形態１に係るセクタの構成を示す図である。
【図４】本発明の実施の形態１に係るデータ書き込み方法のフローチャートである。
【図５】本発明の実施の形態１に係るデータ書き込み方法における動作例を示す図である。
【図６】本発明の実施の形態１に係るデータ書き込み方法における動作例を示す図である。
【図７】本発明の実施の形態１に係るデータ書き込み方法における動作例を示す図である。
【図８】本発明の実施の形態１に係るデータ書き込み方法における動作例を示す図である。
【図９】本発明の実施の形態１に係る、比較例の動作例を示す図である。
【図１０】本発明の実施の形態１に係る設定値の一例を示す図である。
【図１１】本発明の実施の形態１に係る設定値の一例を示す図である。
【図１２】本発明の実施の形態２に係るセクタの構成を示す図である。
【図１３】本発明の実施の形態２に係るデータ書き込み方法のフローチャートである。
【図１４】本発明の実施の形態２に係るデータ書き込み方法の動作例を示す図である。
【図１５】本発明の実施の形態２に係るデータ書き込み方法の動作例を示す図である。
【図１６】本発明の実施の形態３に係るデータ書き込み方法のフローチャートである。
【図１７】本発明の実施の形態３に係るデータ書き込み方法の動作例を示す図である。
【図１８】本発明の実施の形態３に係るデータ書き込み方法の動作例を示す図である。
【図１９】本発明の実施の形態４に係るバッテリー監視装置のブロック図である。
【発明を実施するための形態】
【００３１】
以下、本発明を実施するための形態について、図面を参照しながら説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００３２】
（実施の形態１）
本発明の実施の形態１に係る半導体装置は、使用中状態のセクタの空き容量が設定値に達した場合に、使用済み状態のセクタの有効なデータ（未転送データ）を使用中状態のセクタに転送する。これにより、当該半導体装置は、書き込み禁止時間を短くできるとともに、フラッシュメモリへデータを書き込む回数を少なくできる。
【００３３】
まず、本発明の実施の形態１に係る半導体装置１００の構成を説明する。
【００３４】
図１は、本発明の実施の形態１に係る半導体装置１００の構成を示す図である。
【００３５】
図１に示す半導体装置１００は、フラッシュメモリ１１０と、制御部１２０とを備える。この半導体装置１００は、データをフラッシュメモリ１１０の異なる領域に順次書き込む。言い換えると、半導体装置１００は、データを更新する際、更新後の新しいデータを、更新前の古いデータに上書きするのではなく、更新前のデータをフラッシュメモリ１１０に格納したまま、フラッシュメモリ１１０の別領域に更新後のデータを書き込む。また、半導体装置１００は、フラッシュメモリ１１０に最後に書き込まれたデータを有効なデータとしてフラッシュメモリ１１０から読み出す。
【００３６】
例えば、半導体装置１００は、１チップの半導体集積回路である。言い換えると、半導体装置１００は、例えば、フラッシュメモリが搭載された１チップマイコン（マイクロコントローラ）である。
【００３７】
フラッシュメモリ１１０（フラッシュＲＯＭ）は、電気的にデータ書き換え及びデータ消去可能な不揮発性メモリである。
【００３８】
図２は、フラッシュメモリ１１０の構成を示す図である。
【００３９】
図２に示すように、フラッシュメモリ１１０は、消去単位である複数のセクタ２００を含む。このフラッシュメモリ１１０へのデータの書き込みは、例えば、１ｂｙｔｅ単位で実行可能である。また、このフラッシュメモリ１１０のデータの消去は、１セクタ単位でしか実施することができない。
【００４０】
また、フラッシュメモリ１１０は、プログラム等が格納されるＲＯＭ領域２０１と、データ記録に使用されるデータ記録領域２０３と、ＲＯＭ領域２０１及びデータ記録領域２０３として使用されない未使用領域２０２とを含む。また、データ記録領域２０３に含まれる各セクタ２００（図２のセクタＮ−１及びセクタＮ）は、管理領域２１０と、データ領域２２０とを含む。データ領域２２０には、複数項目のデータが記憶される。ここで、項目とは、データの種類を示し、同一項目のデータは、同一のデータサイズである。例えば、書き込みデータは、データ識別子を含む。このデータ識別子は、当該書き込みデータを識別するための情報であり、当該書き込みデータの項目を示す。このデータ識別子を参照することにより、半導体装置１００は、書き込みデータの項目を判別できる。
【００４１】
また、以下では、特段の記載がない限り、セクタ２００とは、データ記録領域２０３に含まれるセクタ２００のことを指す。
【００４２】
図３は、本発明の実施の形態１におけるセクタ２００の構成を示す図である。なお、以下では、簡単化のため、フラッシュメモリ１１０が２つのセクタ２００Ａ及び２００Ｂを有する場合を例に説明する。なお、これら２つのセクタ２００Ａ及び２００Ｂを特に区別しない場合にはセクタ２００と記す。また、以下では、フラッシュメモリ１１０に格納されるデータの項目は、５種類（Ｎｏ．０〜Ｎｏ．４）であるとする。また、これら５種類のデータのデータサイズは同じであるとする。
【００４３】
図３に示すように、管理領域２１０には、当該セクタ２００の使用状態（以下、セクタ状態と呼ぶ）を示すセクタ管理情報２１１と、当該セクタ２００に格納されている各項目のデータの状態を示すデータ管理情報２１２とが格納される。また、データ領域２２０内には、設定値２３０が設定されている。
【００４４】
セクタ管理情報２１１は、セクタ状態として、使用中状態、未使用状態、及び使用済み状態のいずれかを示す。
【００４５】
使用中状態は、複数のセクタ２００のうち当該セクタ２００がデータの書き込みの対象となることを示す。具体的には、データ書き込みの際に、使用中状態のセクタ２００がデータ書き込み先のセクタに選択される。
【００４６】
使用済み状態は、当該セクタ２００が、全ての領域にデータが書き込まれた後、かつデータ消去前の状態であることを示す。
【００４７】
未使用状態は、当該セクタ２００にデータが書き込まれていないことを示す。また、未使用状態は、当該セクタ２００がデータ消去済みであることを示す。言い換えると、未使用状態は、当該セクタ２００が使用可能な状態であるが、現在使用されていないことを示す。
【００４８】
なお、以下では、セクタ状態が使用中状態のセクタ２００を使用中セクタと呼び、セクタ状態が未使用状態のセクタ２００を未使用セクタと呼び、セクタ状態が使用済み状態のセクタ２００を使用済みセクタと呼ぶ。
【００４９】
データ管理情報２１２は、複数項目（Ｎｏ．０〜Ｎｏ．４）の各々が有効状態であるか無効状態であるかを示す。このデータ管理情報２１２は、各項目に対応し、対応する項目が有効状態であるか無効状態であるかを示すデータ管理情報２４０〜２４４を含む。
【００５０】
ここで、「有効状態」とは、使用中セクタに当該項目の最新のデータが格納されていないことを示す。つまり、「有効状態」とは、当該項目の最新のデータが当該使用済みセクタに格納されていることを示す。また、「無効状態」とは、使用中セクタに当該項目の最新のデータが格納されていることを示す。つまり、「無効状態」とは、当該項目の最新のデータが当該使用済みセクタに格納されていないことを示す。
【００５１】
設定値２３０は、フラッシュＲＯＭ書き込み方法での目印として使用される。
【００５２】
制御部１２０は、フラッシュメモリ１１０へのデータ書き込み、読み出し、及び消去を行う処理部である。この制御部１２０の機能は、例えば、ＣＰＵがプログラムを実行することにより実現される。また、当該プログラムは、例えば、フラッシュメモリ１１０に格納されている。
【００５３】
なお、制御部１２０の機能の一部又は全てを専用の回路（ハードウェア）で実現してもよい。
【００５４】
制御部１２０は、データを使用中セクタに順次書き込む。また、制御部１２０は、使用中セクタ及び使用済みセクタに格納されている同一項目のデータのうち、最後に書き込まれたデータを有効なデータとしてフラッシュメモリ１１０から読み出す。
【００５５】
この制御部１２０は、書き込み部１２１と、転送部１２２と、セクタ管理部１２３と、消去部１２４と、読み出し部１２５と、データ管理部１２６とを備える。
【００５６】
セクタ管理部１２３は、フラッシュメモリ１１０に含まれる複数のセクタ２００のセクタ状態を管理する。具体的には、セクタ管理部１２３は、各セクタ２００に当該セクタ２００のセクタ状態を示すセクタ管理情報２１１を記憶する。また、セクタ管理部１２３は、各セクタ２００に記憶されているセクタ管理情報２１１を管理及び変更する。
【００５７】
また、セクタ管理部１２３は、複数のセクタ２００のうち、例えば、１つのセクタ２００のみを使用中セクタに設定する。また、セクタ管理部１２３は、使用中セクタに空き容量がなくなった場合、当該使用中セクタのセクタ状態を使用済み状態に変更し、未使用セクタのセクタ状態を使用中状態に変更する。
【００５８】
データ管理部１２６は、複数項目の各々が有効状態であるか無効状態であるかを管理する。具体的には、データ管理部１２６は、各セクタ２００に当該セクタ２００のセクタ状態を示すデータ管理情報２１２を記憶する。また、データ管理部１２６は、各セクタ２００に記憶されているデータ管理情報２１２を管理及び変更する。
【００５９】
書き込み部１２１は、データを更新する際、更新前の古いデータを使用中セクタ及び使用済みセクタに格納したまま、使用中セクタの別領域に更新後の新しいデータを書き込む。
【００６０】
転送部１２２は、使用中セクタの空き容量が設定値２３０以下になった場合に、使用済みセクタに格納されている有効データを使用中セクタへ転送する転送処理を行う。ここで、有効データとは、使用済みセクタに格納されている、有効状態の項目の最新のデータである。
【００６１】
消去部１２４は、転送部１２２による転送処理の後、使用済みセクタのデータを消去する。言い換えると、消去部１２４は、使用済みセクタに有効データがなくなった場合に、当該使用済みセクタのデータを消去する。
【００６２】
読み出し部１２５は、使用中セクタ及び使用済みセクタに格納されている複数のデータのうち最後に使用中セクタ又は使用済みセクタに書き込まれた各項目のデータを最新のデータとして読み出す。
【００６３】
次に、半導体装置１００におけるフラッシュメモリ１１０へのデータ書き込み方法について説明する。
【００６４】
図４は本発明の実施の形態１におけるデータ書き込み方法のフローチャートである。図５〜図８は、当該データ書き込み方法における動作例を示す図である。
【００６５】
まず、セクタ管理部１２３は、データの書き込み要求があった場合、使用中セクタに空き容量があるか否かを判断する（Ｓ１０１）。
【００６６】
ここでは、図５に示すように使用中セクタ２００Ａに空き容量がないとする（１０１でＮｏ）。この場合、セクタ管理部１２３は、使用中セクタ２００Ａのセクタ管理情報２１１を使用済に設定するとともに（Ｓ１０２）、未使用セクタ２００Ｂのセクタ管理情報２１１を使用中に設定する（Ｓ１０３）。そして、書き込み部１２１は、ステップＳ１０３でセクタ管理情報２１１を変更した使用中セクタ２００ＢにＮｏ．０の書き込み要求のデータ３００を書き込む（Ｓ１０４）。次に、データ管理部１２６は、使用済みセクタ２００ＡのＮｏ．０のデータ管理情報２４０を無効状態に設定する（Ｓ１０５）。以上の処理により、図５に示す状態となる。
【００６７】
次に、使用中セクタに空き容量がある場合の動作を説明する。図６に示すように使用中セクタ２００Ｂに空き容量がある場合（Ｓ１０１でＹｅｓ）、書き込み部１２１は、使用中セクタ２００ＢにＮｏ．１の書き込み要求のデータ３０１を書き込む（Ｓ１０６）。次に、データ管理部１２６は、使用済みセクタ２００ＡのＮｏ．１のデータ管理情報２４１を無効状態に設定する（Ｓ１０７）。以上の処理により、図６に示す状態となる。
【００６８】
次に、転送部１２２は、使用中セクタ２００Ｂの空き容量が設定値２３０以下であるか否かを判定する（Ｓ１０８）。ここでは、使用中セクタ２００Ｂの空き容量が設定値２３０より多いので（Ｓ１０８でＮｏ）、制御部１２０は処理を終了する。
【００６９】
次に、使用中セクタの空き容量が設定値２３０以下になった場合の動作を説明する。図７に示すように使用中セクタ２００Ｂの空き容量が設定値２３０以下になった場合（Ｓ１０８でＹｅｓ）、転送部１２２は、使用済みセクタ２００Ａの有効データ（Ｎｏ．２のデータ３０２、Ｎｏ．３のデータ３０３及びＮｏ．４のデータ３０４）を使用中セクタ２００Ｂへ転送する（Ｓ１０９）。以上の処理により、図７に示す状態となる。
【００７０】
次に、図８に示すように、消去部１２４は、使用済みセクタ２００Ａのデータを消去する（Ｓ１１０）。このとき、制御部１２０は、使用済みセクタ２００Ａのセクタ管理情報２１１を未使用に変更するとともに、使用済みセクタ２００Ａのデータ管理情報２１２の全ての項目を有効状態に変更する。具体的には、このセクタ管理情報２１１及びデータ管理情報２１２の変更処理は、セクタ２００Ａのデータ消去と同時に行われる。つまり、セクタ管理情報２１１が未使用状態を示す論理値及びデータ管理情報２１２が有効状態を示す論理値と、データが消去された状態の当該データの論理値と同じにする。これにより、セクタ２００Ａのデータ消去と同時に、セクタ管理情報２１１で示されるセクタ状態を未使用状態に変更できるとともに、使用済みセクタ２００Ａのデータ管理情報２１２の全ての項目を有効状態に変更できる。
【００７１】
以上により、本発明の実施の形態１に係る半導体装置１００は、使用中セクタに書き込みが行われた項目のデータを無効として扱う。これにより、半導体装置１００は、使用中セクタが切り換る際のデータ転送量が削減できるので、ユーザーによる書き込み禁止時間を減少できる。また、重複したデータの書き込みが削減できるためフラッシュメモリ１１０へデータを書き込む回数を少なくできる。
【００７２】
ここで、本発明の実施の形態１に係る半導体装置１００の効果を説明するために、本発明の比較例に係る半導体装置について説明する。
【００７３】
図９は、本発明の比較例に係る半導体装置による、使用中セクタに空き容量がない場合の動作例を示す図である。
【００７４】
図９に示すように、当該比較例に係る半導体装置は、使用中セクタに空き容量がない場合、使用中セクタ２００Ａに格納されているデータのうち、各項目（Ｎｏ．０〜Ｎｏ．４）の最新のデータ２５１〜２５５を未使用セクタに転送する。これにより、最新のデータが次に使用されるセクタ２００Ｂに格納される。その後、当該半導体装置は、書き込み要求のデータ２５０をセクタ２００Ｂに書き込む。
【００７５】
その後、セクタ２００Ｂが使用中状態に変更される。また、空き容量がなくなったセクタ２００Ａのデータが消去されるとともに、当該セクタ２００Ａが未使用状態に変更される。
【００７６】
このような処理を行った場合、転送処理において、常に全ての項目（Ｎｏ．０〜Ｎｏ．４）のデータを転送する必要がある。また、この転送処理中は、データ２５０の書き込みは行われないため、書き込み要求が発生してから、データ２５０の書き込みが完了するまでに時間が多くかかってしまう。
【００７７】
一方で、本発明の実施の形態１に係る半導体装置１００では、使用中セクタ２００Ａに空き容量がなくなった際に、直ちに転送処理を行うのではなく、次の使用中セクタ２００Ｂにある程度データが書き込まれた後に転送処理を行う。ここで、この転送処理において、使用中セクタ２００Ｂに既に書き込まれたデータ（図７に示す例ではＮｏ．０及びＮｏ．１のデータ）に関しては転送処理を行う必要がない。これにより、本発明の実施の形態１に係る半導体装置１００は、転送処理において転送するデータ量を削減できる。この結果、当該半導体装置１００は、書き込み禁止時間を減少できるとともに、フラッシュメモリ１１０へデータを書き込む回数を少なくできる。
【００７８】
次に、設定値２３０の具体例を説明する。
【００７９】
図１０は、設定値２３０の第１の具体例を示す図である。図１０に示す例では、設定値２３０は、取り扱う全データの合計２７０から最小書き込み単位２７１を減算した値である。ここで、取り扱う全データの合計２７０とは、複数項目（Ｎｏ．０〜Ｎｏ．４）のデータの合計のデータ量である。また、最小書き込み単位２７１とは、フラッシュメモリ１１０の最小書き込み単位分のデータ量であり、例えば、１バイトである。
【００８０】
このような設定値２３０を用いることにより、使用済みセクタの有効データを使用中セクタへ転送する際に、使用中セクタの空き容量が転送する有効データよりも少なくなり、当該データを転送しきれなくなることを防止できる。
【００８１】
図１１は、設定値２３０の第２の具体例を示す図である。
【００８２】
図１１に示す例では、設定値２３０は、取り扱う全データの合計２７０から最小データのデータ量２７２を減算した値である。ここで、最小データのデータ量２７２とは、複数項目のデータのうち最小のデータのデータ量である。図１１に示す例では、Ｎｏ．０〜Ｎｏ．４のデータのうち、Ｎｏ．０のデータのデータ量が最も小さい。よって、設定値２３０は、取り扱う全データの合計２７０からＮｏ．０のデータのデータ量を減算した値である。
【００８３】
このような設定値２３０は、設定値２３０の境界を跨いでデータが書き込まれない場合に有効である。そして、このような設定値２３０を用いることで、図１０に示す場合に比べて、設定値２３０を小さくできるので、転送処理の際に転送するデータ量を削減できる可能性が高まる。
【００８４】
なお、設定値２３０は、取り扱う全データの合計２７０から最小書き込み単位２７１を減算した値以上であってもよい。例えば、設定値２３０は、取り扱う全データの合計２７０と同じ、又は、取り扱う全データの合計２７０より大きくてもよい。
【００８５】
また、図１０及び図１１では、複数項目のデータの各々のデータ量が異なる場合を示しているが、複数項目のデータのデータ量は同じであってもよい。
【００８６】
なお、上記説明では、セクタ管理情報２１１及びデータ管理情報２１２が、対応するセクタ２００内に格納される例を述べたが、セクタ管理情報２１１及びデータ管理情報２１２の少なくとも一方が、対応するセクタ外に格納されてもよい。例えば、セクタ管理情報２１１及びデータ管理情報２１２の少なくとも一方は、フラッシュメモリ１１０の他のセクタ、又は、半導体装置１００が備える他のメモリ（図示せず）に格納されてもよい。また、セクタ管理情報２１１及びデータ管理情報２１２の少なくとも一方は、テーブル等により一括して管理されてもよい。
【００８７】
（実施の形態２）
本発明の実施の形態２では、上述した実施の形態１に係る半導体装置１００の変形例について説明する。
【００８８】
本発明の実施の形態２に係る半導体装置１００は、複数の設定値を用いて、転送処理を制御する。なお、本発明の実施の形態２に係る半導体装置１００のブロック構成は、実施の形態１と同様のため説明は省略する。また、以下では、実施の形態１との相違点を主に説明する。
【００８９】
図１２は、本発明の実施の形態２におけるセクタ２００の構成を示す図である。図１２に示すように、本発明の実施の形態２では、第１設定値２３１と第２設定値２３２とが用いられる。
【００９０】
図１３は、本発明の実施の形態２におけるデータ書き込み方法のフローチャートである。図１４及び図１５は、当該データ書き込み方法における動作例を示す図である。
【００９１】
なお、ステップＳ１０１〜Ｓ１０７の動作は図４に示す実施の形態１と同様であり、説明は省略する。
【００９２】
ステップＳ１０７の後、転送部１２２は、使用中セクタ２００Ｂの空き容量が第１設定値２３１以下であるか否か（Ｓ２０１）、及び、使用中セクタ２００Ｂの空き容量が第２設定値２３２以下であるか否か（Ｓ２０２）を判定する。なお、このステップＳ２０１及びＳ２０２の判定処理の順序は任意でよい。また、これらの処理の一部又は全てを同時に行なってもよい。
【００９３】
使用中セクタ２００Ｂの空き容量が第１設定値２３１より多い場合（Ｓ２０１でＮｏ）、制御部１２０は処理を終了する。
【００９４】
次に、使用中セクタの空き容量が第１設定値２３１以下になった場合の動作を説明する。図１４に示すように使用中セクタ２００Ｂの空き容量が第１設定値２３１以下、かつ第２設定値２３２より多い場合（Ｓ２０１でＹｅｓ、かつ、Ｓ２０２でＮｏ）、転送部１２２は、使用済みセクタ２００Ａの有効データの一部（ここではＮｏ．２のデータ３１２）を使用中セクタ２００Ｂへ転送する（Ｓ２０３）。そして、次に、データ管理部１２６は、転送されたＮｏ．２のデータ管理情報２４２を無効状態に設定する（Ｓ２０４）。
【００９５】
ここで、ステップＳ２０３で転送されるデータは、第２設定値２３２に収まらない有効データである。つまり、図１４に示す例では、３つの項目（Ｎｏ．２〜Ｎｏ．４）が有効状態であり、第２設定値２３２はデータ２つ分の容量である。よって、転送部１２２は、第２設定値２３２に収まらない１つのデータ（ここではＮｏ．２）を使用中セクタ２００Ｂへ転送する。
【００９６】
具体的には、転送部１２２は、使用済みセクタに格納されている有効データの合計データ量である未転送データ量と第２設定値２３２とを比較する。そして、転送部１２２は、未転送データ量が第２設定値２３２より大きい場合、使用済みセクタ２００Ａに格納されている有効データのうち、第２設定値２３２を超えるデータ量以上のデータを、使用中セクタ２００Ｂへ転送する。また、転送部１２２は、未転送データ量が第２設定値２３２以下の場合、使用済みセクタ２００Ａに格納されている有効データを、使用中セクタ２００Ｂへ転送しない。
【００９７】
次に、使用中セクタの空き容量が第２設定値２３２以下になった場合の動作を説明する。図１５に示すように使用中セクタ２００Ｂの空き容量が第２設定値２３２以下になった場合（Ｓ２０２でＹｅｓ）、転送部１２２は、使用済みセクタ２００Ａの有効データの全て（ここではＮｏ．３のデータ３１３及びＮｏ．４のデータ３１４）を使用中セクタ２００Ｂへ転送する（Ｓ２０５）。次に、消去部１２４は、使用済セクタ２００Ａのデータを消去する（Ｓ１１０）。
【００９８】
以上により、本発明の実施の形態２に係る半導体装置１００は、使用中セクタの空き容量が第１設定値２３１以下になった際には、有効データの一部のみを使用中セクタに転送する。これにより、例えば、当該転送の後に、未転送の有効データが使用中セクタに書き込まれた場合には、当該有効データを転送しなくてもよい。また、本発明の実施の形態２に係る半導体装置１００は、使用中セクタの空き容量が第１設定値２３１以下になった際に、有効データのデータ量が少ない場合には、転送処理を行わない。これにより、使用中セクタの空き容量が第１設定値２３１以下になった後に、未転送の有効データが使用中セクタに書き込まれた場合には、当該有効データを転送しなくてもよい。このように、本発明の実施の形態２に係る半導体装置１００は、上述した実施の形態１に係る半導体装置１００に比べ、さらに、転送データ量を削減できる。
【００９９】
また、本発明の実施の形態２に係る半導体装置１００は、転送処理を２回に分けて行うことにより、１回当たりの転送データ量を小さくできるので、１回の書き込み禁止時間を短くできる。
【０１００】
なお、上記説明では、半導体装置１００が２つの設定値を用いる例を述べたが、３個以上の設定値を用いてもよい。
【０１０１】
（実施の形態３）
本発明の実施の形態３では、上述した実施の形態１に係る半導体装置１００の変形例について説明する。上記実施の形態１では、設定値２３０は予め定められた一定値であったが、本発明の実施の形態３に係る半導体装置１００では、未転送データ量を設定値として用いる。
【０１０２】
図１６は、本発明の実施の形態３におけるデータ書き込み方法のフローチャートである。図１７及び図１８は、当該データ書き込み方法における動作例を示す図である。
【０１０３】
なお、ステップＳ１０１〜Ｓ１０７の動作は図４に示す実施の形態１と同様であり、説明は省略する。
【０１０４】
ステップＳ１０７の後、転送部１２２は、使用済みセクタ２００Ａに格納されている有効データの合計データ量である未転送データ量と、使用中セクタ２００Ｂの空き容量とが一致しているか否かを判定する（Ｓ３０８）。
【０１０５】
例えば、図１７に示す例では、データ３２２が使用中セクタ２００Ｂに書き込まれた状態において、使用済みセクタ２００Ａの有効データはＮｏ．３及びＮｏ．４のデータの２つである。また、使用中セクタの空き容量は、データ４つ分である。この場合、未転送データ量と使用中セクタ２００Ｂの空き容量とが一致しないので（Ｓ３０８でＮｏ）、制御部１２０は処理を終了する。
【０１０６】
一方、図１８に示す例では、データ３２１が使用中セクタ２００Ｂに書き込まれた状態において、使用済みセクタ２００Ａの有効データはＮｏ．３及びＮｏ．４のデータの２つである。また、使用中セクタの空き容量は２つのデータ２つ分である。この場合、未転送データ量と使用中セクタ２００Ｂの空き容量とが一致するので（Ｓ３０８でＹｅｓ）、転送部１２２は、使用済みセクタ２００Ａの有効データ（Ｎｏ．３のデータ３２３及びＮｏ．４のデータ３２４）を使用中セクタ２００Ｂへ転送する（Ｓ１０９）。その後、消去部１２４は、使用済セクタ２００Ａのデータを消去する（Ｓ１１０）。
【０１０７】
以上により、本発明の実施の形態３に係る半導体装置１００は、未転送データ量と使用中セクタ２００Ｂの空き容量とが一致した場合に、有効データを使用中セクタに転送する。これにより、本発明の実施の形態３に係る半導体装置１００は、実施の形態１に係る半導体装置１００に比べて、転送処理を行うタイミングを遅らすことができる。このように、本発明の実施の形態３に係る半導体装置１００は、上述した実施の形態１に係る半導体装置１００に比べ、さらに、転送データ量を削減できる。
【０１０８】
なお、転送部１２２は、未転送データ量に予め定められたマージンを加えた値と、使用中セクタ２００Ｂの空き容量とが一致した場合に、有効データを使用中セクタに転送してもよい。また、転送部１２２は、使用中セクタ２００Ｂの空き容量が、未転送データ量に予め定められたマージンを加えた値以下になった場合に、有効データを使用中セクタに転送してもよい。
【０１０９】
（実施の形態４）
本発明の実施の形態４では、上述した半導体装置を備えるバッテリー監視装置について説明する。
【０１１０】
図１９は、本発明の実施の形態４に係るバッテリー監視装置４００の構成を示すブロック図である。図１９に示す、バッテリー監視装置４００は、バッテリー４１０に接続されており、データ取得部４０１と、半導体装置１００（データ記録装置）とを備える。
【０１１１】
データ取得部４０１は、バッテリー４１０の状況を示すデータを取得する。
【０１１２】
半導体装置１００は、上述した実施の形態１〜３のいずれかに係る半導体装置である。この半導体装置１００は、データ取得部４０１が取得したデータをフラッシュメモリ１１０に記録する。
【０１１３】
ここでは、バッテリー４１０の状況を示すデータとは、バッテリーの状況を示すログ等である。具体的には当該データは、時間ごとの電圧値、温度或いは電流値を示すデータ、又は、バッテリー４１０を起動してからの経過時間を示すデータ、又は、エラー情報等である。このようなデータは頻繁に更新される。よって、上述した半導体装置１００を採用することにより、フラッシュメモリ１１０の書き換え回数を削減できるとともに、データ転送時間を少なくできる。これにより、フラッシュメモリ１１０を少ないメモリ容量で構成できる。このように、バッテリー監視装置４００は、頻繁なデータの記録に適している。
【０１１４】
なお、ここでは、一例として、バッテリー監視装置４００に本発明の半導体装置１００を用いる例を説明したが、本発明に係る半導体装置１００は、ログを記録する他のシステム又はデータの書き換え量が多い他のシステムにも好適である。例えば、電力量メータ、又は水道メータ等でも同様の効果を得ることができる。
【０１１５】
以上、本発明の実施の形態に係る半導体装置及びバッテリー監視装置について説明したが、本発明は、この実施の形態に限定されるものではない。
【０１１６】
また、上記実施の形態に係る半導体装置及びバッテリー監視装置に含まれる各処理部は典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。
【０１１７】
また、集積回路化はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、又はＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１１８】
また、本発明の実施の形態に係る、半導体装置及びバッテリー管理装置の機能の一部又は全てを、ＣＰＵ等のプロセッサがプログラムを実行することにより実現してもよい。
【０１１９】
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【０１２０】
また、上記実施の形態１〜４に係る、半導体装置、バッテリー監視装置及びそれら変形例の機能のうち少なくとも一部を組み合わせてもよい。
【０１２１】
また、上記で用いた数字は、全て本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。
【０１２２】
更に、本発明の主旨を逸脱しない限り、本実施の形態に対して当業者が思いつく範囲内の変更を施した各種変形例も本発明に含まれる。
【産業上の利用可能性】
【０１２３】
本発明は、フラッシュメモリを備える半導体装置に適用できる。また、本発明は、内蔵のフラッシュＲＯＭをＥＥＰＲＯＭとして安全に使用することが可能になるので、外部メモリとしてＥＥＰＲＯＭを使用するシステム等に有用である。
【符号の説明】
【０１２４】
１００  半導体装置
１１０  フラッシュメモリ
１２０  制御部
１２１  書き込み部
１２２  転送部
１２３  セクタ管理部
１２４  消去部
１２５  読み出し部
１２６  データ管理部
２００、２００Ａ、２００Ｂ  セクタ
２０１  ＲＯＭ領域
２０２  未使用領域
２０３  データ記録領域
２１０  管理領域
２１１  セクタ管理情報
２１２、２４０、２４１、２４２、２４３、２４４  データ管理情報
２２０  データ領域
２３０  設定値
２３１  第１設定値
２３２  第２設定値
２５０、２５１、２５２、２５３、２５４、２５５、３００、３０１、３０２、３０３、３０４、３１２、３１３、３１４、３２１、３２２、３２３、３２４  データ
２７０  取り扱う全データの合計
２７１  最小書き込み単位
２７２  最小データのデータ量
４００  バッテリー監視装置
４０１  データ取得部
４１０  バッテリー
【図１】
2012203877.tif 000003
【図２】
2012203877.tif 000004
【図３】
2012203877.tif 000005
【図４】
2012203877.tif 000006
【図５】
2012203877.tif 000007
【図６】
2012203877.tif 000008
【図７】
2012203877.tif 000009
【図８】
2012203877.tif 000010
【図９】
2012203877.tif 000011
【図１０】
2012203877.tif 000012
【図１１】
2012203877.tif 000013
【図１２】
2012203877.tif 000014
【図１３】
2012203877.tif 000015
【図１４】
2012203877.tif 000016
【図１５】
2012203877.tif 000017
【図１６】
2012203877.tif 000018
【図１７】
2012203877.tif 000019
【図１８】
2012203877.tif 000020
【図１９】
2012203877.tif 000021