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