(57)【要約】【課題】データ消去後の再書き込みが可能な記憶装置のデータを効率的に管理する。【解決手段】管理サイズのデータの記憶領域に含まれる１以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域にデータが書き込まれているか否かを示す割当情報を格納する割当情報格納部と、書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域のデータの有効性を含む分割使用情報を格納する分割使用情報格納部と、処理装置が記憶装置との間でデータを読み出しまたは書き込みするときのデータの格納先を識別する論理識別情報とデータが記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を備える。【選択図】図１
2010092113.tif 000002
【特許請求の範囲】
【請求項１】
処理装置からアクセスされ、所定の書き込みサイズでのデータの１回の書き込みと書き込んだデータの読み出しと前記書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の前記書き込みサイズでのデータの再書き込みとが可能な記憶装置であり、
前記管理サイズのデータの記憶領域を識別する情報を格納する管理単位識別部と、
前記管理サイズのデータの記憶領域に含まれる１以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域のデータの有効性を含む割当情報を格納する割当情報格納部と、
前記書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域にデータが書き込まれているか否かを示す分割使用情報を格納する分割使用情報格納部と、
前記処理装置が前記記憶装置との間でデータを読み出しまたは書き込みするときの前記データの格納先を識別する論理識別情報と前記データが前記記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を備える記憶装置。
【請求項２】
前記分割使用情報格納部は、前記アドレス情報格納部と一体に構成され、前記分割使用情報は、それぞれのアドレス情報の余白ビット部分に格納される請求項１に記載の記憶装置。
【請求項３】
処理装置と、前記処理装置からアクセスされ、所定の書き込みサイズでのデータの１回の書き込みと書き込んだデータの読み出しと前記書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の前記書き込みサイズでのデータの再書き込みとが可能な記憶装置とを備える電子装置であり、
前記記憶装置は、前記管理サイズのデータの記憶領域を識別する情報を格納する管理単位識別部と、
前記管理サイズのデータの記憶領域に含まれる１以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域のデータの有効性を含む割当情報を格納する割当情報格納部と、
前記書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域にデータが書き込まれているか否かを示す分割使用情報を格納する分割使用情報格納部と、
前記処理装置が前記記憶装置との間でデータを読み出しまたは書き込みするときの前記データの格納先を識別する論理識別情報と前記データが前記記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を有する電子装置。
【請求項４】
前記分割使用情報格納部は、前記アドレス情報格納部と一体に構成され、前記分割使用情報は、それぞれのアドレス情報の余白ビット部分に格納される請求項３に記載の電子装置。
【請求項５】
前記処理装置は、前記記憶装置からのデータ読み出し時に、前記分割使用情報格納部を参照して、読み出し対象のデータの記憶領域においてデータが書き込み済みか否かを判定する手段を有する請求項３または４に記載の電子装置。
【請求項６】
処理装置からアクセスされ、所定の書き込みサイズでのデータの１回の書き込みと書き込んだデータの読み出しと前記書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の前記書き込みサイズでのデータの再書き込みとが可能な記憶装置でのデータ管理方法であり、前記処理装置が、
前記管理サイズのデータの記憶領域を識別する情報を管理単位識別部に格納するステップと、
前記管理サイズのデータの記憶領域に含まれる１以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域のデータの有効性を含む割当情報を割当情報格納部に格納するステップと、
前記書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域にデータが書き込まれているか否かを示す分割使用情報を分割使用情報格納部に格納するステップと、
前記処理装置が前記記憶装置との間でデータを読み出しまたは書き込みするときの前記データの格納先を識別する論理識別情報と前記データが前記記憶装置内に格納されるときの格納位置との関係を示すアドレス情報をアドレス情報格納部に保持するステップと、を実行するデータ管理方法。
【請求項７】
前記分割使用情報格納部は、前記アドレス情報格納部と一体に構成され、前記分割使用情報は、それぞれのアドレス情報の余白ビット部分に格納される請求項６に記載のデータ管理方法。
【請求項８】
前記記憶装置からのデータ読み出し時に、前記分割使用情報格納部を参照して、読み出し対象のデータの記憶領域においてデータが書き込み済みか否かを判定するステップをさらに実行する請求項６または７に記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、フラッシュメモリ等の記憶装置および記憶装置を含む電子装置に関する。
【背景技術】
【０００２】
従来、電子機器等のシステム情報やアプリケーション用データの格納先として、フラッシュメモリが使用されてきた。しかし、半導体製造技術の向上により、マイクロコンピュータ等のＬＳＩ（Large Scale Integration）内にフラッシュメモリが内蔵されるように
なってきている。さらに、最近では読み出しと書き込みの同時実行可能な機能を付加したフラッシュメモリなど多様なフラッシュメモリが内蔵されるようになってきている。
【０００３】
しかし、単独のフラッシュメモリに比べ、記憶容量が小さいため、内蔵フラッシュメモリに格納されるデータは、主に重要で小サイズのシステム情報となっている。
【特許文献１】特開２００４−７８９０７号公報
【特許文献２】特開２００４−１２６９４５号公報
【特許文献３】特開２００４−２４０６６０号公報
【特許文献４】米国特許第５，４０４，４８５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリがＬＳＩに内蔵されることに伴い、内蔵フラッシュメモリのデータを管理するソフトウェアまたはシステムが必要になってきている。しかし、現状のフラッシュメモリ用データ管理方法をそのまま適応するのは妥当でない。内蔵フラッシュメモリ内で管理されるデータは、通常のフラッシュメモリよりも小サイズのデータであるため、データを管理するための管理情報が管理されるべきデータ量と比較して相対的に大きくなり、フラッシュメモリ内の多くのエリアを占有してしまうからである。本目的は、フラッシュメモリのように、データ消去後の再書き込みが可能な記憶装置のデータを効率的に管理する技術を提供することにある。
【課題を解決するための手段】
【０００５】
そこで、本実施形態の一側面では、処理装置からアクセスされ、所定の書き込みサイズでのデータの１回の書き込みと書き込んだデータの読み出しと書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の書き込みサイズでのデータの再書き込みとが可能な記憶装置が提供される。
【０００６】
本記憶装置は、管理サイズの記憶領域を識別する情報を格納する管理単位識別部と、管理サイズのデータの記憶領域に含まれる１以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域にデータが書き込まれているか否かを示す割当情報を格納する割当情報格納部と、書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域のデータの有効性を含む分割使用情報を格納する分割使用情報格納部と、処理装置が記憶装置との間でデータを読み出しまたは書き込みするときのデータの格納先を識別する論理識別情報とデータが記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を備える。
【発明の効果】
【０００７】
本記憶装置によれば、データ消去後の再書き込みが可能な記憶装置のデータを効率的に管理できる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して、最良の形態（以下、実施形態という）の一側面に係るフラッシュメモリ内蔵の半導体装置について説明する。以下の実施形態の構成は例示であり、本半導体装置は実施形態の構成には限定されない。
【０００９】
＜システムの概要＞
図１に、本半導体装置の構成例を示す。本半導体装置は、ＣＰＵコア１と、内蔵ＲＡＭ２と、内蔵フラッシュメモリ３とを含む。ＣＰＵコア１は、内蔵ＲＡＭ２および内蔵フラッシュメモリ３とメモリバスで接続される。ＣＰＵコア１は、メモリバスを通じて、内蔵ＲＡＭ２および内蔵フラッシュメモリ３に高速にデータを入出力することができる。また、内蔵フラッシュメモリ３に書き込まれたデータは、ＣＰＵコア１以外から読み出すことができないので、セキュリティを確保するために都合がよい。以上の半導体装置の構成要素、すなわち、ＣＰＵコア１、内蔵ＲＡＭ２、内蔵フラッシュメモリ３には、バッテリ４から電源が供給される。
【００１０】
図２に、内蔵フラッシュメモリ３の記憶領域の構成図を例示する。内蔵フラッシュメモリ３の記憶領域は、一旦書き込まれたデータを一括消去するときの消去される単位のデータ量の領域で区切られている。この消去されるデータ量を消去単位（管理単位に相当）といい、これらの領域そのものも消去単位と呼ぶ。消去単位の先頭には、個々の消去単位を他の消去単位と区別するための識別情報が付されている。
【００１１】
図３に、１つの消去単位の内部の構造を示す。通常、フラッシュメモリ３の消去単位の内部は、データを書き込むときの書き込みサイズの記憶領域（これをアクセス単位領域、あるいはブロックともいう）に区切られている。この書き込みサイズは、データを読み出すときの読み出しサイズでもある。図３では、「データ書き込み読み出し単位」と記述されている。ただし、以下では、その大きさを単に書き込みサイズ（あるいは、読み出しサイズ）という。
【００１２】
このような書き込みサイズの記憶領域に分割された消去単位には、図２に示した識別情報に続いて、管理情報である割当情報を格納する割当情報領域３１、およびデータ領域３２が構成される。消去単位のサイズは、例えば、８ＫＢ（８１９２バイト）、６４ＫＢ、１２８ＫＢ等のサイズに設定される。また、書き込みサイズは、例えば、１２８バイト、５１２バイトのように設定される。本実施形態では、消去単位を８ＫＢ、書き込みサイズを１２８バイトとして説明する。また、図３の例では、識別情報を６４バイト、１つの割当情報を４バイトと仮定する。ただし、本半導体装置は、このような情報のデータ量に限定されるわけではない。
【００１３】
すると、１つの消去単位には、６４個のアクセス単位領域が構成されるので、６４個の割当情報が必要となる。そして、消去単位の先頭のアクセス単位領域３０１には、先頭の識別情報（６４バイト）の他、１６個の割当情報が格納される。また、消去単位の先頭から２番目のアクセス単位領域３０２には、３６個の割当情報が格納される。さらに、また、消去単位の先頭から３番目のアクセス単位領域３０３には、１２個の割当情報が格納される。そして、消去単位の先頭から４番目のアクセス単位領域３０４以降の記憶領域がデータ領域３２を構成する。
【００１４】
割当情報には、割当情報に対応するアクセス単位領域の状態を示すフラグ情報と、ＣＰＵコア１が内蔵フラッシュメモリ３にアクセスするときの論理アドレスとが格納される。
【００１５】
図４に、論理アドレス空間と、物理アドレス空間との関係を例示する。論理アドレスは
、ＣＰＵコア１が内蔵フラッシュメモリ３にアクセスするときのＣＰＵコア１が認識可能な記憶領域を識別するアドレスである。この論理アドレスは、消去単位内のデータ領域３２のいずれかに格納されたアドレス情報によって消去単位内の物理アドレスに変換される。物理アドレスは、内蔵フラッシュメモリ３内での記憶領域の位置を特定する情報である。物理アドレスは、例えば、個々のアクセス単位領域の先頭のアドレスである。
【００１６】
図４の例では、論理アドレス空間は、３２バイトのデータに区切られ、対応するデータが物理アドレス空間に格納されている。ただし、物理アドレス空間は、アクセス単位領域である１２８バイト単位に区切られている。そのため、論理アドレスは、アクセス単位領域の先頭アドレスＡＤＲ０と、その先頭アドレスからのオフセットＯＦＦＳＴに対応づけられることになる。
【００１７】
なお、割当情報に内蔵される論理アドレスは、そのアドレス変換に使用される情報ではなく、割当情報から論理アドレスを認識するための逆ポインタとして使用される。
【００１８】
また、割当情報中のフラグ情報は、アクセス単位領域が、未使用（書き込み可能）、使用中（書き込み中）、書き込み済み（データが保持されている）、消去済みの４つの状態を示す情報の他、当該アクセス単位領域が管理情報であるか、アドレス情報であるかを識別する。なお、アクセス単位領域が管理情報でもなく、アドレス情報でもない場合には、アクセス単位領域は通常のデータ領域であり、未使用（書き込み可能）、使用中（書き込み中）、書き込み済み（データが保持されている）、消去済みの４つの状態で識別されることになる。
【００１９】
したがって、図３の例では、先頭の３つの割当情報に含まれるフラグ情報は、いずれも、「管理情報」を示す。ただし、図３は、そのうち、２つだけが示されている。また、図３では、消去単位の先頭から１７番目の割当情報（消去単位の先頭から２番目のアクセス単位領域の先頭、割当情報＃１６）は、書き込み済みを示す“確定”の状態を示している。この場合、１７番目のアクセス単位領域３０５には、通常のデータが書き込み済みとなっている。また、同様に１８番目の割当情報（＃１７）は「アドレス情報」を示している。この場合、１８番目のアクセス単位領域３０６には、アドレス情報が格納されている。
【００２０】
本実施形態の内蔵フラッシュメモリ３は、アドレス情報として、内蔵フラッシュメモリ３の全領域でそれぞれのアクセス単位領域を識別することができるビット数を保持する。アクセス単位領域のデータ量は、書き込みサイズ（この例では、１２８バイト）である。したがって、例えば、内蔵フラッシュメモリ３の容量が１ＭＢとすると、１ＭＢ／１２８バイト＝８１９２個の領域が識別できればよく、論理アドレス、物理アドレスともに、１３ビットあればよい。したがって、したがって、アドレス情報として４バイトの領域を確保した場合、その４バイトのうち１３ビット分の情報が１対、合計２６ビットの領域が使用され、残りは空き領域となる。
【００２１】
なお、１ＭＢの空間に対するアドレス情報としては、仮想アドレスとして１３ビット必要であったとしても、その仮想アドレスから、まず、消去単位（８ＫＢ単位）の識別情報を確定し、その次に、８ＫＢの消去単位内で、１２８バイトのアクセス単位領域を識別するようにしてもよい。その場合には、消去単位内にアドレス情報を格納することを前提として、８１９２／１２８＝６４個のアクセス単位領域を識別できればよい。その場合には、仮想アドレス中でアクセス単位領域を識別するオフセット６ビットと、消去単位内でアクセス単位領域を識別する６ビットとを合わせて、１２ビットをアドレス情報として格納しておけばよい。したがって、アドレス情報として４バイトの領域を確保した場合、その４バイトのうち６ビット分の情報が１対、合計１２ビットの領域が使用され、残りは空き領域となる。この場合に、物理アドレスは、消去単位の識別情報、消去単位内のアクセス
単位領域の番号（先頭から何個目のアクセス単位領域であるかを示す情報）で示されることになる。
【００２２】
図５から図７に、割当情報と、アドレス情報とによってフラッシュメモリ３にデータを入出する処理例を示す。これらの処理は、ＣＰＵコア１にて実行されるプログラムによって実現される。図５は、読み出し処理を例示するフローチャートである。
【００２３】
まず、図示しないが、処理の開始前（通常は、半導体装置に電源が投入されたとき）、ＣＰＵコア１は、すべての消去単位内から、事前にアドレス情報を読み出し、内蔵ＲＡＭ２に保持している。ＣＰＵコア１は、内蔵フラッシュメモリ３のデータを読み出す場合には、その読み出し先の論理アドレスを認識している。そこで、ＣＰＵコア１は、内蔵ＲＡＭ２に保持されたアドレス情報を基に、論理アドレスを物理アドレスに変換する（Ｓ１）。
【００２４】
次に、ＣＰＵコア１は、データの格納先、すなわち、論理アドレスを変換して得られた物理アドレスから、アクセス単位領域のデータを読み出す（Ｓ２）。この場合、例えば、ＣＰＵコア１が、図４に示したような３２バイトのデータを読み出したい場合でも、アクセス単位領域の読み出しサイズ（１２８バイト）で、データが読み出されることになる。
【００２５】
図６は、未使用のアクセス単位領域への書き込み処理を例示するフローチャートである。ＣＰＵコア１は、内蔵フラッシュメモリ３から割当情報を走査し、”未使用”となっているアクセス単位領域を探索する（Ｓ１１）。
【００２６】
次に、ＣＰＵコア１は、”未使用”となっている割当情報の１つを”使用中”に変更する（Ｓ１２）。ここで、“未使用”とするのは、例えば、データ書き込み途中で電源がオフになる故障が発生し、その後に電源が復旧したような場合に、そのアクセス単位領域が未使用ではない（何かのデータが書き込まれている可能性がある）ことを示すためである。フラッシュメモリは、一旦書き込まれるとデータが消去されるまで次のデータの書き込みができない。そのため、未使用ではないことを示す必要があるからである。
【００２７】
さらに、ＣＰＵコア１は、”使用中”に変更した割当情報に対応するデータ領域３２のアクセス単位領域にデータを格納する（Ｓ１３）。この場合も、ＣＰＵコア１が３２バイトのデータを書き込みたい場合であっても、書き込み対象データのない領域を含めて、アクセス単位領域を構成する（書き込みサイズの）１２８バイト単位でデータが書き込まれることになる。
【００２８】
そして、ＣＰＵコア１は、書き込み先として認識していた論理アドレスと、データを格納したアクセス単位領域の物理アドレス（アクセス単位領域の先頭アドレス）とを対にしてアドレス情報としてデータ領域に格納する（Ｓ１４）。ただし、アドレス情報については、１つのアクセス単位領域に対して、そのサイズである書き込みサイズ分の個数、例えば、１２８バイトの書き込みサイズに対しては、４バイトのアドレス情報が３６個格納可能である。本実施形態では、３６個中１個のアドレス情報が更新された場合でも、３６個のアドレス情報（１２８バイト）全体を新たなアクセス単位領域に格納する。その場合のアドレス情報に対する割当情報の処理は、通常のデータと同様である。すなわち、そのアドレス情報が格納されたアクセス単位領域の割当フラグをまず”使用中”として、更新されたアドレス情報（１２８バイト）の書き込みが完了すると、割当情報を“確定”に変更する。さらに、上記データを格納したアクセス単位領域に対応する割当情報のフラグ情報を”使用中”から”確定”に変更する（Ｓ１５）。
【００２９】
図７は、一部が書き込みされたアクセス単位領域への追加の書き込み処理を例示するフ
ローチャートである。この場合には、追加書き込みされるアクセス単位領域全体が、新たなアクセス単位領域にコピーされるとともに、追加の書き込みがなされる。したがって、この処理は、アクセス単位領域の書き換え時のフローということができる。ここでは、一部書き込み済みのアクセス単位領域から旧データが読み出し済みであると仮定して説明する。その場合の読み出し処理は、図５と同様である。
【００３０】
ＣＰＵコア１は、まず、新たなデータの格納先を検索し（ＳＡ１１）、割当情報を使用中に設定する（ＳＡ１２）。この処理は、図６の未使用時のアクセス単位領域への処理と同様である。
【００３１】
次に、ＣＰＵコア１は、ＳＡ１１で検索された割当情報に対応するアクセス単位領域に、データを書き込む（ＳＡ１３）。書き込むべきデータは、一部書き込みされていたアクセス単位領域に、追加書きすべきデータを書き加えたデータである。本来、書き込みすべきアクセス単位領域から読み出された旧データと、新たに書き込みすべきデータとが合成されて、１つのアクセス単位領域が作成され、新たな領域に書き込まれることになる。
【００３２】
次に、ＣＰＵコア１は、旧データの割当情報を「確定」から、「書き換え中」に変更する（ＳＡ１４）。そして、ＣＰＵコア１は、アドレス情報を新データの格納先の物理アドレスに更新する（ＳＡ１５）。この手順は、図６のＳ１４と同様である。
【００３３】
次に、ＣＰＵコア１は、新データの格納先であるアクセス単位領域の割当情報を「確定」に変更する（ＳＡ１６）。次に、ＣＰＵコア１は、旧データ格納先の割当情報を「削除」に変更する（Ｓ１７）。
【００３４】
以上のように割当情報によってデータ領域の状態（例えば、空き領域）を管理し、データをデータ領域３２に書き込み、さらに、アドレス情報にしたがって、書き込んだデータを読み出すことができる。しかし、図３の構成では、書き込みサイズが１２８バイトと比較的大きな値であるため、細かな単位でのデータの書き込みと読み出しができない。そこで、より細かな単位でデータの書き込みと読み出しを行うため、例えば、書き込みサイズ（すなわち、読み出しサイズ）を小さくすることが考えられる。
【００３５】
図８に、データの書き込みサイズ（および読み出しサイズ）を図３よりも小さくした場合の問題点を例示する。単純にデータの書き込みサイズを小さくした場合、図８のように、割当情報とアドレス情報の数が増える。例えば、データの書き込みサイズを３２バイトとした場合、割当情報とアドレス情報は、図３の場合と比較してそれぞれ４倍となる。消去単位が８ＫＢの場合、消去単位内の管理情報の総サイズは、割当情報とアドレス情報でそれぞれ８ＫＢ/３２バイト*４バイト=１ＫＢとなる。管理情報全体の増加分は、１消去
単位あたり、１５３６バイトとなる。
【００３６】
このようにデータの入出力単位である書き込みサイズを３２バイトにしたときの１消去単位内の概略図は、図８のようになる。アドレス情報はデータ領域内に点在するため、この概略図では、すべてを記述していないが、割当情報と同サイズである。このように、書き込みサイズ（および読み出しサイズ）を小さくすればするほど、相対的に管理情報が増加し、効率が低下する。
【００３７】
そこで、本半導体装置は、図８のように単純に書き込み単位を小さくすることなく、実質的により書き込みサイズよりも小さな単位でのデータの書き込みと読み出しを実現する。
【００３８】
＜第１実施形態＞
図９から図１４の図面に基づいて、第１実施形態に係る半導体装置の構成および処理を説明する。図９は、本半導体装置の１つの消去単位の内部の構造を例示する構成図である。図９の消去単位の構成は、図３と同様、識別情報および割当情報等の管理情報を含むアクセス単位領域３１１、３１２、３１３が含まれる。また、図３と同様、図９の消去単位には、通常のデータが書き込み済みのアクセス単位領域３１５、およびアドレス情報が格納されているアクセス単位領域３１６が含まれる。
【００３９】
ただし、図９の構成では、図３とは異なり、６４番目の割当情報を含むアクセス単位領域３１３の次から、使用状況フラグを含むアクセス単位領域３１４が配置される。使用状況フラグ（分割使用情報に相当）は、アクセス単位領域３１５をより細かいサイズの領域、例えば、３２バイトごとに４つに分割した領域（これを使用状況管理領域ともいう）に対応して、その３２バイトの領域が書き込み済みか否かを示すフラグを有する。
【００４０】
したがって、本実施形態のフラッシュメモリ３では、例えば、８ＫＢの消去単位が１２８バイト６４個のアクセス単位領域に分割され、それぞれのアクセス単位領域の状態が割当情報で管理される。さらに、６４個のアクセス単位領域のうち、データが格納されるアクセス単位領域がそれぞれ３２バイトの使用状況管理領域に分割される。そして、それぞれの使用状況管理領域の使用状況が、例えば、１バイトの使用状況フラグで管理される。使用状況フラグは、消去単位内に（８ＫＢの場合）、最大２５６個（２５６バイト）である。また、使用状況フラグは、最大で、２個分のアクセス単位領域に格納される。したがって、消去単位中の６４個のアクセス単位領域のうち、５個が識別情報、割当情報、および使用状況フラグに使用される。
【００４１】
使用状況フラグは、その並び順で、同一の並び順の使用状況管理領域の状態を示す。例えば、使用状況管理領域にデータが書き込まれる前は、使用状況フラグは、ＦＦである。また、使用状況管理領域にデータが書き込まれた場合には、例えば、７Ｆの値が設定される。
【００４２】
図１０および図１１に、使用状況フラグによって管理されるアクセス単位領域の構成を例示する。図１０では、0x1200hで指定される論理アドレスを先頭にアクセス単位領域Ａ
１が構成されている。このアクセス単位領域Ａ１は、３２バイトの４つの使用状況管理領域Ｂ１−Ｂ４を有している。さらに、図１０では、２番の使用状況管理領域Ｂ２には、すでにデータが書き込み済みである。
【００４３】
この場合に、使用状況管理領域Ｂ２に対応する使用状況フラグは、オン（７Ｆｈ）に設定される。一方、アクセス単位領域Ａ１内の使用状況管理領域Ｂ１，Ｂ３，Ｂ４は、空き領域である。すると、アクセス単位領域Ａ１内のすべての使用状況管理領域Ｂ１−Ｂ４が、書き込み済みであるか、否かをどのように判定すべきであるかが問題となる。すなわち、本実施形態の内蔵フラッシュメモリ３にデータを書き込むためには、ＣＰＵコア１は、アクセス単位領域の以下の３つの状態を判定する必要がある。
（１）書き込み先のアクセス単位領域が、全くの空き領域である場合。この場合は、割当情報によって「未使用」で判断できる。
（２）書き込み先のアクセス単位領域が、部分的に書き込み済みであるが、書き込み先の使用状況管理領域が、未書き込みの場合。
（３）書き込み先のアクセス単位領域が、部分的に書き込み済みであり、かつ、書き込み先の使用状況管理領域が、書き込み済みの場合。あるいは、さらには、書き込み先のアクセス単位領域が書き込み済みの場合。
【００４４】
本実施形態では、ＣＰＵコア１は、アドレス情報を参照し、書き込み先の論理アドレスに対応する物理アドレスが書き込まれているか、否かにより、（１）と、（２）（３）と
を識別する。さらに、ＣＰＵコア１は、使用状況フラグにより、（２）と（３）と区別して処理する。
【００４５】
図１１は、すでに、書き込み済みの旧データ（ＸＹＺとＡＤＣ）が存在するアクセス単位領域Ａ２のうち、書き込み済みのデータ（ＡＤＣ）を新データ（ＡＢＣ）に書き換える処理例である。すでに述べたように、フラッシュメモリは、通常の処理では、データを一旦削除しない限り、書き換えることはできない。本実施形態では、図１１のように、旧データを含むアクセス単位領域を一旦読み出し、その一部を書き換え、新たな領域に格納することで、実質的なデータの書き換えを実現する。
【００４６】
図１２に、本実施形態における読み出しフローを例示する。この処理では、ＣＰＵコア１は、アプリケーションが読み出すデータの論理アドレスから、アクセス単位領域（ブロック）を特定する論理アドレス（ブロック論理アドレスと呼ぶ）と、そのブロック論理アドレスの先頭からのオフセット値を求める（Ｓ２１）。アクセス単位領域をデータ管理単位ともいう。
【００４７】
次に、ＣＰＵコア１は、ブロック論理アドレスを基にアドレス情報を参照し、データ格納先であるアクセス単位領域の先頭の物理アドレスを特定し、オフセット値から、読み出すデータ（使用状況管理領域の先頭の物理アドレス）を特定する（Ｓ２２）。
【００４８】
次に、ＣＰＵコア１は、対応するデータの領域の使用状況フラグを参照しデータが書き込み済を確認する（Ｓ２３）。そして、ＣＰＵコア１は、データ格納先からデータを読み出す（Ｓ２４）。
【００４９】
図１３に、本実施形態における書き込みフローを例示する。この処理では、ＣＰＵコア１は、アプリケーションが書き込むデータの論理アドレスから、アクセス単位領域の論理アドレスを計算し、アクセス単位領域の論理アドレスと、その論理アドレスの先頭からのオフセット値を求める（Ｓ１０１）。
【００５０】
次に、ＣＰＵコア１は、アクセス単位領域の論理アドレスに対応するアドレス情報Cが
書き込みされているか確認する（Ｓ１０２）。書き込みされていない場合、新規なアクセル単位領域への書き込み処理となる。上記（１）の場合の書き込み処理である。この場合に、ＣＰＵコア１は、そのアドレス情報に設定すべき新規の物理領域を検索する。すなわち、ＣＰＵコア１は、割当情報を読み出し、「未使用」とされている領域を検索する（Ｓ１１１）。
【００５１】
そして、ＣＰＵコア１は、「未使用」を示す割当情報の１つを「使用中」に変更する（Ｓ１１２）。次に、ＣＰＵコア１は、「使用中」の割当情報に対するデータ領域の先頭からオフセット値分加えたアドレスのデータ領域（使用状況管理領域）にデータを書き込む（Ｓ１１３）。次に、ＣＰＵコア１は、アクセス単位領域の論理アドレスに対応するアドレス情報を更新する（Ｓ１１４）。すなわち、書き込み先の論理アドレスに対して、実際にデータを書き込んだ物理アドレスを設定する。
【００５２】
次に、ＣＰＵコア１は、データを書き込みした使用状況管理領域に対応する使用状況フラグをデータ書き込み済に変更する（Ｓ１１５）。さらに、ＣＰＵコア１は、そのアクセス単位領域の割当情報を書き込み済みに変更する（Ｓ１１６）。これにより、新規なアクセス単位領域へのデータの部分書き込みが完了する。
【００５３】
また、Ｓ１０２の判定で、すでに、アドレス情報が書き込みされている場合、すでに一部領域に書き込みがされたアクセス単位領域への書き込み処理となる。上記（２）の場合
の書き込み処理である。この場合に、ＣＰＵコア１は、論理アドレスの先頭からのオフセット値の領域の使用状況フラグが未使用になっていることを確認する（Ｓ１２１）。ここで、オフセット値は、書き込み先の使用状況管理領域を示すオフセット値である。
【００５４】
そして、その使用状況フラグが未使用になっている場合、ＣＰＵコア１は、上記の使用状況フラグに対応するデータ領域である使用状況管理領域からデータを読み出して、実際に未使用状態であるか否かを確認する（Ｓ１２２）。この確認は、データの書き込み処理時に電源が遮断したような場合に対応する対策のためのである。すなわち、そのような電源遮断によって一部データが書き込まれた場合に、同一の領域に再度データの書き込み処理を行うと、中途半端に書き込みされた領域に対してデータを上書きする処理が発生してしまう。フラッシュメモリでは、一旦書き込まれた領域に対しては、データ消去を行わないで、書き込むことはできない。そのような再書き込みを防ぐために、本実施形態では、データを書き込む前にその領域（例えば３２バイトの使用状況管理領域）を全てのビットを読み出して、書き込みされていない状態か否かを確認する。
【００５５】
そして、使用状況管理領域が実際に未使用である場合、ＣＰＵコア１は、上記の使用状況フラグに対応するデータ領域である使用状況管理領域にデータを書き込む（Ｓ１２３）。さらに、ＣＰＵコア１は、その使用状況管理領域に対応する使用状況フラグを使用済みに変更する（Ｓ１２４）。このようにして、一部書き込み済みのアクセス単位領域に対する追加書きが完了する。
【００５６】
さらに、Ｓ１２２の判定で、すでに、その使用状況フラグが使用済みになっている場合、すでに、書き込み済みのデータの書き換え処理となる。これは、上記（３）の場合の処理である。なお、Ｓ１２２の判定で、使用状況管理領域が実際に未使用でなかった場合も同一の処理を実行する。この場合、ＣＰＵコア１は、割当情報を読み出し、「未使用」領域を検索する（Ｓ１３１）。書き込み先がすでに書き込みになっているため、データを書き換えた後の格納先として、新規に領域を確保するためである。
【００５７】
そして、ＣＰＵコア１は、「未使用」を示す割当情報の１つを「使用中」に変更する（Ｓ１３２）。そして、ＣＰＵコア１は、「使用中」の割当情報に対するデータ領域の先頭からオフセット値分加えたアドレスのデータ領域（使用状況管理領域）にデータを書き込む（Ｓ１３３）。
【００５８】
以下、図１４を用いて、説明を継続する。次に、ＣＰＵコア１は、新データの書き込み先以外の旧データを上記新たな使用状況管理領域にコピーする。すなわち、新データの書き込み先以外のアクセス単位領域内で、使用状況フラグがデータ書き込み済となっているデータをすべて、新データを書き込みしたアクセス単位領域のデータ領域にコピーする（Ｓ１４１）。
【００５９】
次に、ＣＰＵコア１は、データを書き込んだ使用状況管理領域に対応する使用状況フラグをすべて書き込み済にする（Ｓ１４２）。次に、ＣＰＵコア１は、旧データを含むアクセス単位領域の割当情報を「確定」から「書き換え中」情報に変更する（Ｓ１４３）。次に、ＣＰＵコア１は、アクセス単位領域の論理アドレスに対応するアドレス情報の物理アドレスを新データの物理アドレスに更新する（Ｓ１４４）。次に、ＣＰＵコア１は、新データの割当情報を「確定」に変更する（Ｓ１４５）。そして、ＣＰＵコア１は、旧データの割当情報に「削除」を書き込む（Ｓ１４６）。このように、部分書き込み済みの領域が上書きされて新たなアクセス単位領域に格納されることになる。
【００６０】
以上述べたように、本実施形態の半導体装置によれば、内蔵フラッシュメモリ３の記憶領域が、消去単位（例えば、８ＫＢ）に区分され、消去単位の内部が、書き込みサイズお
よび読み出しサイズ（例えば、１２８バイト）のアクセス単位領域に分割される。さらに、アクセス単位領域は、例えば、３２バイトの使用状況管理領域に分割される。そして、アクセス単位領域が、”未使用”、”使用中”、”確定”または、”消去済み”のいずれであるかが、割当情報によって管理される。また、使用状況管理領域が書き込み済みであるか否かが使用状況フラグによって管理される。したがって、図６に示したように、割当情報を増加させることなく、使用状況フラグによって、細かい単位でデータ領域が書き込み済みであるか、否かを管理できる。
【００６１】
使用状況フラグは１ビットで十分であるが、例えば、１バイト確保したとしても、割当情報と比較して小さな容量（上記実施形態の構成の場合２５６バイト）で、３２バイト単位の細かな領域を管理できる。
【００６２】
なお、上記では、消去単位を８ＫＢとし、書き込みサイズを１２８バイトとし、使用状況管理領域を３２バイトとしたが、本実施形態の構成は、このようなサイズに限定されるわけではない。例えば、使用状況管理領域を１６、８、４バイト等としてもよい。
【００６３】
また、上記実施形態では、アドレス情報については、１２８バイトのアクセス単位で格納した。しかし、これに代えて、アドレス情報についても、アクセス単位よりも小さい使用状況管理領域（例えば、３２バイト）に区切り、使用状況フラグで管理してもよい。管理手順は、図９および図１０のフローチャートで行った通常のデータに対する手順と同様である。
【００６４】
＜第２実施形態＞
本半導体装置の第２実施形態を図１５から図１８の図面によって説明する。上記第１実施形態では、割当情報は、消去単位の先頭付近に格納され、アドレス情報は、割当情報と分離されてデータ領域に格納されていた。しかし、内蔵フラッシュメモリ３は、比較的容量が小さいため、アドレス情報としては、より小さな値でもよい。例えば、上述のように、１ＭＢの内蔵フラッシュメモリ３において、１２８バイト単位のアクセス単位領域を識別するためには１３ビットあればよい。したがって、論理アドレスと物理アドレスの組として２６ビットあれば足りる。
【００６５】
そこで、本実施形態では、４バイトのアドレス情報の下位ビットに、使用状況フラグを格納する。他の構成および作用は、第１実施形態と同様である。そこで、同一の構成要素については、同一の符号を付してその説明を省略する。
【００６６】
図１５に、本実施形態の消去単位の構成を例示する。本実施形態でも、管理情報３１に含まれるアクセス単位領域３３１−３３３の構成は、第１実施形態と同様である。ただし、本実施形態では、データ領域３２に格納されるアドレス情報の下位４ビットに４つの使用状況フラグを格納する。
【００６７】
図１６に、この場合の読み出し処理のフローを例示する。この処理でも、処理の開始前（通常は、半導体装置に電源が投入されたとき）、ＣＰＵコア１は、すべての消去単位内から、事前にアドレス情報を読み出し、内蔵ＲＡＭ２に保持している。ＣＰＵコア１は、内蔵フラッシュメモリ３のデータを読み出す場合には、その読み出し先の論理アドレスを認識している。そこで、ＣＰＵコア１は、内蔵ＲＡＭ２に保持されたアドレス情報を基に、論理アドレスを物理アドレスに変換する。また、このとき、と使用状況フラグを参照し、オフセットに相当する位置の使用状況フラグを判定する（Ｓ４１）。
【００６８】
次に、使用状況フラグが、書き込み済みを示す場合、ＣＰＵコア１は、データの格納先、すなわち、その消去単位内の物理アドレスから、アクセス単位領域のデータを読み出す
（Ｓ４２）。なお、使用状況フラグが書き込み済みでない場合、ＣＰＵコア１は、読み出しエラーとして処理する。
【００６９】
図１７および図１８は、書き込み処理のフローを例示する図である。図１７および図１８の処理は、Ｓ１１４Ａ、およびＳ１４４Ａの処理を除いて、図１３および図１４と同様である。すなわち、本実施形態では、ＣＰＵコア１は、図１７のＳ１１４Ａにおいて、アクセス単位領域の論理アドレスに対応するアドレス情報を更新するとともに、データを書き込みした領域に対応する使用状況フラグをデータ書き込み済に変更する。したがって、図１３のＳ１１５の処理は、Ｓ１１４Ａに含まれている。アドレス情報の格納領域の下位ビットに使用状況フラグが格納されているからである。このように、本実施形態では、アドレス情報と使用状況フラグが近接して格納されているので、処理効率が向上する。
【００７０】
また、図１８のＳ１４４Ａにおいて、ＣＰＵコア１は、アクセス単位領域の論理アドレスに対応するアドレス情報を新データの物理アドレスに更新するとともに、新データを含むアクセス単位領域のデータ領域にデータを書き込みした領域に対応する使用状況フラグをすべて書き込み済にする。したがって、図１４のＳ１４２の処理は、Ｓ１４４Ａに含まれている。
【００７１】
以上のように割当情報によってデータ領域の状態（例えば、空き領域）を管理し、データをデータ領域３２に書き込み、さらに、アドレス情報および使用状況フラグにしたがって、書き込んだデータを読み出すことができる。
【００７２】
また、アドレス情報は、１つのアクセス単位領域（１２８バイト）の先頭の物理アドレスを保持する。そして、そのアドレス情報の下位４ビットには、そのアクセス単位領域を４つに分割した使用状況管理領域（３２ビット）に対応するそれぞれの使用状況フラグを格納する。
【００７３】
このように、アドレス情報の下位ビットに使用状況フラグを格納することで、内蔵フラッシュメモリ３のデータ量（使用状況フラグに相当するオーバーヘッド）を節約できる。また、書き込みフローでは、アドレス情報の更新と併せて使用状況フラグを参照または更新しているため、アドレス情報と使用状況フラグを組み合わせることで、処理の効率も向上する。また、読み出しフローでは、アドレス情報と併せて使用状況フラグを参照できるため、処理の効率が向上する。
【図面の簡単な説明】
【００７４】
【図１】一実施形態に係る半導体装置の構成例を示す図である。
【図２】内蔵フラッシュメモリの記憶領域の構成図を例示する図である。
【図３】１つの消去単位の内部の構造を示す図である。
【図４】論理アドレス空間と、物理アドレス空間との関係を例示する図である。
【図５】読み出し処理を例示するフローチャートである。
【図６】書き込み処理を例示するフローチャートである。
【図７】一部が書き込みされたアクセス単位領域への追加の書き込み処理を例示するフローチャートである。
【図８】データの書き込みサイズ（および読み出しサイズ）を小さくした場合の問題点を例示する図である。
【図９】半導体装置の１つの消去単位の内部の構造を例示する構成図である。
【図１０】使用状況フラグによって管理されるアクセス単位領域の構成を例示する図である。
【図１１】書き込み済みのデータを新データに書き換える処理例である。
【図１２】第１実施形態の読み出しフローを例示する図である。
【図１３】第１実施形態の書き込みフローを例示する図である。
【図１４】第１実施形態の書き込みフロー（続き）を例示する図である
【図１５】第２実施形態の消去単位の構成を例示する
【図１６】第２実施形態の読み出し処理のフローを例示する図である。
【図１７】第２実施形態の書き込み処理のフローを例示する図である。
【図１８】第２実施形態の書き込み処理（続き）のフローを例示する図である。
【符号の説明】
【００７５】
１  ＣＰＵコア
２  内蔵ＲＡＭ
３  内蔵フラッシュメモリ
４  バッテリ
３１  割当情報領域
３２  データ領域
【図１】
2010092113.tif 000003
【図２】
2010092113.tif 000004
【図３】
2010092113.tif 000005
【図４】
2010092113.tif 000006
【図５】
2010092113.tif 000007
【図６】
2010092113.tif 000008
【図７】
2010092113.tif 000009
【図８】
2010092113.tif 000010
【図９】
2010092113.tif 000011
【図１０】
2010092113.tif 000012
【図１１】
2010092113.tif 000013
【図１２】
2010092113.tif 000014
【図１３】
2010092113.tif 000015
【図１４】
2010092113.tif 000016
【図１５】
2010092113.tif 000017
【図１６】
2010092113.tif 000018
【図１７】
2010092113.tif 000019
【図１８】
2010092113.tif 000020