説明

記憶装置、電子装置、および、データ管理方法

【課題】データ消去後の再書き込みが可能な記憶装置のデータを効率的に管理する。
【解決手段】管理サイズのデータの記憶領域に含まれる1以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域にデータが書き込まれているか否かを示す割当情報を格納する割当情報格納部と、書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域のデータの有効性を含む分割使用情報を格納する分割使用情報格納部と、処理装置が記憶装置との間でデータを読み出しまたは書き込みするときのデータの格納先を識別する論理識別情報とデータが記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、フラッシュメモリ等の記憶装置および記憶装置を含む電子装置に関する。
【背景技術】
【0002】
従来、電子機器等のシステム情報やアプリケーション用データの格納先として、フラッシュメモリが使用されてきた。しかし、半導体製造技術の向上により、マイクロコンピュータ等のLSI(Large Scale Integration)内にフラッシュメモリが内蔵されるように
なってきている。さらに、最近では読み出しと書き込みの同時実行可能な機能を付加したフラッシュメモリなど多様なフラッシュメモリが内蔵されるようになってきている。
【0003】
しかし、単独のフラッシュメモリに比べ、記憶容量が小さいため、内蔵フラッシュメモリに格納されるデータは、主に重要で小サイズのシステム情報となっている。
【特許文献1】特開2004−78907号公報
【特許文献2】特開2004−126945号公報
【特許文献3】特開2004−240660号公報
【特許文献4】米国特許第5,404,485号明細書
【発明の開示】
【発明が解決しようとする課題】
【0004】
フラッシュメモリがLSIに内蔵されることに伴い、内蔵フラッシュメモリのデータを管理するソフトウェアまたはシステムが必要になってきている。しかし、現状のフラッシュメモリ用データ管理方法をそのまま適応するのは妥当でない。内蔵フラッシュメモリ内で管理されるデータは、通常のフラッシュメモリよりも小サイズのデータであるため、データを管理するための管理情報が管理されるべきデータ量と比較して相対的に大きくなり、フラッシュメモリ内の多くのエリアを占有してしまうからである。本目的は、フラッシュメモリのように、データ消去後の再書き込みが可能な記憶装置のデータを効率的に管理する技術を提供することにある。
【課題を解決するための手段】
【0005】
そこで、本実施形態の一側面では、処理装置からアクセスされ、所定の書き込みサイズでのデータの1回の書き込みと書き込んだデータの読み出しと書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の書き込みサイズでのデータの再書き込みとが可能な記憶装置が提供される。
【0006】
本記憶装置は、管理サイズの記憶領域を識別する情報を格納する管理単位識別部と、管理サイズのデータの記憶領域に含まれる1以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域にデータが書き込まれているか否かを示す割当情報を格納する割当情報格納部と、書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域のデータの有効性を含む分割使用情報を格納する分割使用情報格納部と、処理装置が記憶装置との間でデータを読み出しまたは書き込みするときのデータの格納先を識別する論理識別情報とデータが記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を備える。
【発明の効果】
【0007】
本記憶装置によれば、データ消去後の再書き込みが可能な記憶装置のデータを効率的に管理できる。
【発明を実施するための最良の形態】
【0008】
以下、図面を参照して、最良の形態(以下、実施形態という)の一側面に係るフラッシュメモリ内蔵の半導体装置について説明する。以下の実施形態の構成は例示であり、本半導体装置は実施形態の構成には限定されない。
【0009】
<システムの概要>
図1に、本半導体装置の構成例を示す。本半導体装置は、CPUコア1と、内蔵RAM2と、内蔵フラッシュメモリ3とを含む。CPUコア1は、内蔵RAM2および内蔵フラッシュメモリ3とメモリバスで接続される。CPUコア1は、メモリバスを通じて、内蔵RAM2および内蔵フラッシュメモリ3に高速にデータを入出力することができる。また、内蔵フラッシュメモリ3に書き込まれたデータは、CPUコア1以外から読み出すことができないので、セキュリティを確保するために都合がよい。以上の半導体装置の構成要素、すなわち、CPUコア1、内蔵RAM2、内蔵フラッシュメモリ3には、バッテリ4から電源が供給される。
【0010】
図2に、内蔵フラッシュメモリ3の記憶領域の構成図を例示する。内蔵フラッシュメモリ3の記憶領域は、一旦書き込まれたデータを一括消去するときの消去される単位のデータ量の領域で区切られている。この消去されるデータ量を消去単位(管理単位に相当)といい、これらの領域そのものも消去単位と呼ぶ。消去単位の先頭には、個々の消去単位を他の消去単位と区別するための識別情報が付されている。
【0011】
図3に、1つの消去単位の内部の構造を示す。通常、フラッシュメモリ3の消去単位の内部は、データを書き込むときの書き込みサイズの記憶領域(これをアクセス単位領域、あるいはブロックともいう)に区切られている。この書き込みサイズは、データを読み出すときの読み出しサイズでもある。図3では、「データ書き込み読み出し単位」と記述されている。ただし、以下では、その大きさを単に書き込みサイズ(あるいは、読み出しサイズ)という。
【0012】
このような書き込みサイズの記憶領域に分割された消去単位には、図2に示した識別情報に続いて、管理情報である割当情報を格納する割当情報領域31、およびデータ領域32が構成される。消去単位のサイズは、例えば、8KB(8192バイト)、64KB、128KB等のサイズに設定される。また、書き込みサイズは、例えば、128バイト、512バイトのように設定される。本実施形態では、消去単位を8KB、書き込みサイズを128バイトとして説明する。また、図3の例では、識別情報を64バイト、1つの割当情報を4バイトと仮定する。ただし、本半導体装置は、このような情報のデータ量に限定されるわけではない。
【0013】
すると、1つの消去単位には、64個のアクセス単位領域が構成されるので、64個の割当情報が必要となる。そして、消去単位の先頭のアクセス単位領域301には、先頭の識別情報(64バイト)の他、16個の割当情報が格納される。また、消去単位の先頭から2番目のアクセス単位領域302には、36個の割当情報が格納される。さらに、また、消去単位の先頭から3番目のアクセス単位領域303には、12個の割当情報が格納される。そして、消去単位の先頭から4番目のアクセス単位領域304以降の記憶領域がデータ領域32を構成する。
【0014】
割当情報には、割当情報に対応するアクセス単位領域の状態を示すフラグ情報と、CPUコア1が内蔵フラッシュメモリ3にアクセスするときの論理アドレスとが格納される。
【0015】
図4に、論理アドレス空間と、物理アドレス空間との関係を例示する。論理アドレスは
、CPUコア1が内蔵フラッシュメモリ3にアクセスするときのCPUコア1が認識可能な記憶領域を識別するアドレスである。この論理アドレスは、消去単位内のデータ領域32のいずれかに格納されたアドレス情報によって消去単位内の物理アドレスに変換される。物理アドレスは、内蔵フラッシュメモリ3内での記憶領域の位置を特定する情報である。物理アドレスは、例えば、個々のアクセス単位領域の先頭のアドレスである。
【0016】
図4の例では、論理アドレス空間は、32バイトのデータに区切られ、対応するデータが物理アドレス空間に格納されている。ただし、物理アドレス空間は、アクセス単位領域である128バイト単位に区切られている。そのため、論理アドレスは、アクセス単位領域の先頭アドレスADR0と、その先頭アドレスからのオフセットOFFSTに対応づけられることになる。
【0017】
なお、割当情報に内蔵される論理アドレスは、そのアドレス変換に使用される情報ではなく、割当情報から論理アドレスを認識するための逆ポインタとして使用される。
【0018】
また、割当情報中のフラグ情報は、アクセス単位領域が、未使用(書き込み可能)、使用中(書き込み中)、書き込み済み(データが保持されている)、消去済みの4つの状態を示す情報の他、当該アクセス単位領域が管理情報であるか、アドレス情報であるかを識別する。なお、アクセス単位領域が管理情報でもなく、アドレス情報でもない場合には、アクセス単位領域は通常のデータ領域であり、未使用(書き込み可能)、使用中(書き込み中)、書き込み済み(データが保持されている)、消去済みの4つの状態で識別されることになる。
【0019】
したがって、図3の例では、先頭の3つの割当情報に含まれるフラグ情報は、いずれも、「管理情報」を示す。ただし、図3は、そのうち、2つだけが示されている。また、図3では、消去単位の先頭から17番目の割当情報(消去単位の先頭から2番目のアクセス単位領域の先頭、割当情報#16)は、書き込み済みを示す“確定”の状態を示している。この場合、17番目のアクセス単位領域305には、通常のデータが書き込み済みとなっている。また、同様に18番目の割当情報(#17)は「アドレス情報」を示している。この場合、18番目のアクセス単位領域306には、アドレス情報が格納されている。
【0020】
本実施形態の内蔵フラッシュメモリ3は、アドレス情報として、内蔵フラッシュメモリ3の全領域でそれぞれのアクセス単位領域を識別することができるビット数を保持する。アクセス単位領域のデータ量は、書き込みサイズ(この例では、128バイト)である。したがって、例えば、内蔵フラッシュメモリ3の容量が1MBとすると、1MB/128バイト=8192個の領域が識別できればよく、論理アドレス、物理アドレスともに、13ビットあればよい。したがって、したがって、アドレス情報として4バイトの領域を確保した場合、その4バイトのうち13ビット分の情報が1対、合計26ビットの領域が使用され、残りは空き領域となる。
【0021】
なお、1MBの空間に対するアドレス情報としては、仮想アドレスとして13ビット必要であったとしても、その仮想アドレスから、まず、消去単位(8KB単位)の識別情報を確定し、その次に、8KBの消去単位内で、128バイトのアクセス単位領域を識別するようにしてもよい。その場合には、消去単位内にアドレス情報を格納することを前提として、8192/128=64個のアクセス単位領域を識別できればよい。その場合には、仮想アドレス中でアクセス単位領域を識別するオフセット6ビットと、消去単位内でアクセス単位領域を識別する6ビットとを合わせて、12ビットをアドレス情報として格納しておけばよい。したがって、アドレス情報として4バイトの領域を確保した場合、その4バイトのうち6ビット分の情報が1対、合計12ビットの領域が使用され、残りは空き領域となる。この場合に、物理アドレスは、消去単位の識別情報、消去単位内のアクセス
単位領域の番号(先頭から何個目のアクセス単位領域であるかを示す情報)で示されることになる。
【0022】
図5から図7に、割当情報と、アドレス情報とによってフラッシュメモリ3にデータを入出する処理例を示す。これらの処理は、CPUコア1にて実行されるプログラムによって実現される。図5は、読み出し処理を例示するフローチャートである。
【0023】
まず、図示しないが、処理の開始前(通常は、半導体装置に電源が投入されたとき)、CPUコア1は、すべての消去単位内から、事前にアドレス情報を読み出し、内蔵RAM2に保持している。CPUコア1は、内蔵フラッシュメモリ3のデータを読み出す場合には、その読み出し先の論理アドレスを認識している。そこで、CPUコア1は、内蔵RAM2に保持されたアドレス情報を基に、論理アドレスを物理アドレスに変換する(S1)。
【0024】
次に、CPUコア1は、データの格納先、すなわち、論理アドレスを変換して得られた物理アドレスから、アクセス単位領域のデータを読み出す(S2)。この場合、例えば、CPUコア1が、図4に示したような32バイトのデータを読み出したい場合でも、アクセス単位領域の読み出しサイズ(128バイト)で、データが読み出されることになる。
【0025】
図6は、未使用のアクセス単位領域への書き込み処理を例示するフローチャートである。CPUコア1は、内蔵フラッシュメモリ3から割当情報を走査し、”未使用”となっているアクセス単位領域を探索する(S11)。
【0026】
次に、CPUコア1は、”未使用”となっている割当情報の1つを”使用中”に変更する(S12)。ここで、“未使用”とするのは、例えば、データ書き込み途中で電源がオフになる故障が発生し、その後に電源が復旧したような場合に、そのアクセス単位領域が未使用ではない(何かのデータが書き込まれている可能性がある)ことを示すためである。フラッシュメモリは、一旦書き込まれるとデータが消去されるまで次のデータの書き込みができない。そのため、未使用ではないことを示す必要があるからである。
【0027】
さらに、CPUコア1は、”使用中”に変更した割当情報に対応するデータ領域32のアクセス単位領域にデータを格納する(S13)。この場合も、CPUコア1が32バイトのデータを書き込みたい場合であっても、書き込み対象データのない領域を含めて、アクセス単位領域を構成する(書き込みサイズの)128バイト単位でデータが書き込まれることになる。
【0028】
そして、CPUコア1は、書き込み先として認識していた論理アドレスと、データを格納したアクセス単位領域の物理アドレス(アクセス単位領域の先頭アドレス)とを対にしてアドレス情報としてデータ領域に格納する(S14)。ただし、アドレス情報については、1つのアクセス単位領域に対して、そのサイズである書き込みサイズ分の個数、例えば、128バイトの書き込みサイズに対しては、4バイトのアドレス情報が36個格納可能である。本実施形態では、36個中1個のアドレス情報が更新された場合でも、36個のアドレス情報(128バイト)全体を新たなアクセス単位領域に格納する。その場合のアドレス情報に対する割当情報の処理は、通常のデータと同様である。すなわち、そのアドレス情報が格納されたアクセス単位領域の割当フラグをまず”使用中”として、更新されたアドレス情報(128バイト)の書き込みが完了すると、割当情報を“確定”に変更する。さらに、上記データを格納したアクセス単位領域に対応する割当情報のフラグ情報を”使用中”から”確定”に変更する(S15)。
【0029】
図7は、一部が書き込みされたアクセス単位領域への追加の書き込み処理を例示するフ
ローチャートである。この場合には、追加書き込みされるアクセス単位領域全体が、新たなアクセス単位領域にコピーされるとともに、追加の書き込みがなされる。したがって、この処理は、アクセス単位領域の書き換え時のフローということができる。ここでは、一部書き込み済みのアクセス単位領域から旧データが読み出し済みであると仮定して説明する。その場合の読み出し処理は、図5と同様である。
【0030】
CPUコア1は、まず、新たなデータの格納先を検索し(SA11)、割当情報を使用中に設定する(SA12)。この処理は、図6の未使用時のアクセス単位領域への処理と同様である。
【0031】
次に、CPUコア1は、SA11で検索された割当情報に対応するアクセス単位領域に、データを書き込む(SA13)。書き込むべきデータは、一部書き込みされていたアクセス単位領域に、追加書きすべきデータを書き加えたデータである。本来、書き込みすべきアクセス単位領域から読み出された旧データと、新たに書き込みすべきデータとが合成されて、1つのアクセス単位領域が作成され、新たな領域に書き込まれることになる。
【0032】
次に、CPUコア1は、旧データの割当情報を「確定」から、「書き換え中」に変更する(SA14)。そして、CPUコア1は、アドレス情報を新データの格納先の物理アドレスに更新する(SA15)。この手順は、図6のS14と同様である。
【0033】
次に、CPUコア1は、新データの格納先であるアクセス単位領域の割当情報を「確定」に変更する(SA16)。次に、CPUコア1は、旧データ格納先の割当情報を「削除」に変更する(S17)。
【0034】
以上のように割当情報によってデータ領域の状態(例えば、空き領域)を管理し、データをデータ領域32に書き込み、さらに、アドレス情報にしたがって、書き込んだデータを読み出すことができる。しかし、図3の構成では、書き込みサイズが128バイトと比較的大きな値であるため、細かな単位でのデータの書き込みと読み出しができない。そこで、より細かな単位でデータの書き込みと読み出しを行うため、例えば、書き込みサイズ(すなわち、読み出しサイズ)を小さくすることが考えられる。
【0035】
図8に、データの書き込みサイズ(および読み出しサイズ)を図3よりも小さくした場合の問題点を例示する。単純にデータの書き込みサイズを小さくした場合、図8のように、割当情報とアドレス情報の数が増える。例えば、データの書き込みサイズを32バイトとした場合、割当情報とアドレス情報は、図3の場合と比較してそれぞれ4倍となる。消去単位が8KBの場合、消去単位内の管理情報の総サイズは、割当情報とアドレス情報でそれぞれ8KB/32バイト*4バイト=1KBとなる。管理情報全体の増加分は、1消去
単位あたり、1536バイトとなる。
【0036】
このようにデータの入出力単位である書き込みサイズを32バイトにしたときの1消去単位内の概略図は、図8のようになる。アドレス情報はデータ領域内に点在するため、この概略図では、すべてを記述していないが、割当情報と同サイズである。このように、書き込みサイズ(および読み出しサイズ)を小さくすればするほど、相対的に管理情報が増加し、効率が低下する。
【0037】
そこで、本半導体装置は、図8のように単純に書き込み単位を小さくすることなく、実質的により書き込みサイズよりも小さな単位でのデータの書き込みと読み出しを実現する。
【0038】
<第1実施形態>
図9から図14の図面に基づいて、第1実施形態に係る半導体装置の構成および処理を説明する。図9は、本半導体装置の1つの消去単位の内部の構造を例示する構成図である。図9の消去単位の構成は、図3と同様、識別情報および割当情報等の管理情報を含むアクセス単位領域311、312、313が含まれる。また、図3と同様、図9の消去単位には、通常のデータが書き込み済みのアクセス単位領域315、およびアドレス情報が格納されているアクセス単位領域316が含まれる。
【0039】
ただし、図9の構成では、図3とは異なり、64番目の割当情報を含むアクセス単位領域313の次から、使用状況フラグを含むアクセス単位領域314が配置される。使用状況フラグ(分割使用情報に相当)は、アクセス単位領域315をより細かいサイズの領域、例えば、32バイトごとに4つに分割した領域(これを使用状況管理領域ともいう)に対応して、その32バイトの領域が書き込み済みか否かを示すフラグを有する。
【0040】
したがって、本実施形態のフラッシュメモリ3では、例えば、8KBの消去単位が128バイト64個のアクセス単位領域に分割され、それぞれのアクセス単位領域の状態が割当情報で管理される。さらに、64個のアクセス単位領域のうち、データが格納されるアクセス単位領域がそれぞれ32バイトの使用状況管理領域に分割される。そして、それぞれの使用状況管理領域の使用状況が、例えば、1バイトの使用状況フラグで管理される。使用状況フラグは、消去単位内に(8KBの場合)、最大256個(256バイト)である。また、使用状況フラグは、最大で、2個分のアクセス単位領域に格納される。したがって、消去単位中の64個のアクセス単位領域のうち、5個が識別情報、割当情報、および使用状況フラグに使用される。
【0041】
使用状況フラグは、その並び順で、同一の並び順の使用状況管理領域の状態を示す。例えば、使用状況管理領域にデータが書き込まれる前は、使用状況フラグは、FFである。また、使用状況管理領域にデータが書き込まれた場合には、例えば、7Fの値が設定される。
【0042】
図10および図11に、使用状況フラグによって管理されるアクセス単位領域の構成を例示する。図10では、0x1200hで指定される論理アドレスを先頭にアクセス単位領域A
1が構成されている。このアクセス単位領域A1は、32バイトの4つの使用状況管理領域B1−B4を有している。さらに、図10では、2番の使用状況管理領域B2には、すでにデータが書き込み済みである。
【0043】
この場合に、使用状況管理領域B2に対応する使用状況フラグは、オン(7Fh)に設定される。一方、アクセス単位領域A1内の使用状況管理領域B1,B3,B4は、空き領域である。すると、アクセス単位領域A1内のすべての使用状況管理領域B1−B4が、書き込み済みであるか、否かをどのように判定すべきであるかが問題となる。すなわち、本実施形態の内蔵フラッシュメモリ3にデータを書き込むためには、CPUコア1は、アクセス単位領域の以下の3つの状態を判定する必要がある。
(1)書き込み先のアクセス単位領域が、全くの空き領域である場合。この場合は、割当情報によって「未使用」で判断できる。
(2)書き込み先のアクセス単位領域が、部分的に書き込み済みであるが、書き込み先の使用状況管理領域が、未書き込みの場合。
(3)書き込み先のアクセス単位領域が、部分的に書き込み済みであり、かつ、書き込み先の使用状況管理領域が、書き込み済みの場合。あるいは、さらには、書き込み先のアクセス単位領域が書き込み済みの場合。
【0044】
本実施形態では、CPUコア1は、アドレス情報を参照し、書き込み先の論理アドレスに対応する物理アドレスが書き込まれているか、否かにより、(1)と、(2)(3)と
を識別する。さらに、CPUコア1は、使用状況フラグにより、(2)と(3)と区別して処理する。
【0045】
図11は、すでに、書き込み済みの旧データ(XYZとADC)が存在するアクセス単位領域A2のうち、書き込み済みのデータ(ADC)を新データ(ABC)に書き換える処理例である。すでに述べたように、フラッシュメモリは、通常の処理では、データを一旦削除しない限り、書き換えることはできない。本実施形態では、図11のように、旧データを含むアクセス単位領域を一旦読み出し、その一部を書き換え、新たな領域に格納することで、実質的なデータの書き換えを実現する。
【0046】
図12に、本実施形態における読み出しフローを例示する。この処理では、CPUコア1は、アプリケーションが読み出すデータの論理アドレスから、アクセス単位領域(ブロック)を特定する論理アドレス(ブロック論理アドレスと呼ぶ)と、そのブロック論理アドレスの先頭からのオフセット値を求める(S21)。アクセス単位領域をデータ管理単位ともいう。
【0047】
次に、CPUコア1は、ブロック論理アドレスを基にアドレス情報を参照し、データ格納先であるアクセス単位領域の先頭の物理アドレスを特定し、オフセット値から、読み出すデータ(使用状況管理領域の先頭の物理アドレス)を特定する(S22)。
【0048】
次に、CPUコア1は、対応するデータの領域の使用状況フラグを参照しデータが書き込み済を確認する(S23)。そして、CPUコア1は、データ格納先からデータを読み出す(S24)。
【0049】
図13に、本実施形態における書き込みフローを例示する。この処理では、CPUコア1は、アプリケーションが書き込むデータの論理アドレスから、アクセス単位領域の論理アドレスを計算し、アクセス単位領域の論理アドレスと、その論理アドレスの先頭からのオフセット値を求める(S101)。
【0050】
次に、CPUコア1は、アクセス単位領域の論理アドレスに対応するアドレス情報Cが
書き込みされているか確認する(S102)。書き込みされていない場合、新規なアクセル単位領域への書き込み処理となる。上記(1)の場合の書き込み処理である。この場合に、CPUコア1は、そのアドレス情報に設定すべき新規の物理領域を検索する。すなわち、CPUコア1は、割当情報を読み出し、「未使用」とされている領域を検索する(S111)。
【0051】
そして、CPUコア1は、「未使用」を示す割当情報の1つを「使用中」に変更する(S112)。次に、CPUコア1は、「使用中」の割当情報に対するデータ領域の先頭からオフセット値分加えたアドレスのデータ領域(使用状況管理領域)にデータを書き込む(S113)。次に、CPUコア1は、アクセス単位領域の論理アドレスに対応するアドレス情報を更新する(S114)。すなわち、書き込み先の論理アドレスに対して、実際にデータを書き込んだ物理アドレスを設定する。
【0052】
次に、CPUコア1は、データを書き込みした使用状況管理領域に対応する使用状況フラグをデータ書き込み済に変更する(S115)。さらに、CPUコア1は、そのアクセス単位領域の割当情報を書き込み済みに変更する(S116)。これにより、新規なアクセス単位領域へのデータの部分書き込みが完了する。
【0053】
また、S102の判定で、すでに、アドレス情報が書き込みされている場合、すでに一部領域に書き込みがされたアクセス単位領域への書き込み処理となる。上記(2)の場合
の書き込み処理である。この場合に、CPUコア1は、論理アドレスの先頭からのオフセット値の領域の使用状況フラグが未使用になっていることを確認する(S121)。ここで、オフセット値は、書き込み先の使用状況管理領域を示すオフセット値である。
【0054】
そして、その使用状況フラグが未使用になっている場合、CPUコア1は、上記の使用状況フラグに対応するデータ領域である使用状況管理領域からデータを読み出して、実際に未使用状態であるか否かを確認する(S122)。この確認は、データの書き込み処理時に電源が遮断したような場合に対応する対策のためのである。すなわち、そのような電源遮断によって一部データが書き込まれた場合に、同一の領域に再度データの書き込み処理を行うと、中途半端に書き込みされた領域に対してデータを上書きする処理が発生してしまう。フラッシュメモリでは、一旦書き込まれた領域に対しては、データ消去を行わないで、書き込むことはできない。そのような再書き込みを防ぐために、本実施形態では、データを書き込む前にその領域(例えば32バイトの使用状況管理領域)を全てのビットを読み出して、書き込みされていない状態か否かを確認する。
【0055】
そして、使用状況管理領域が実際に未使用である場合、CPUコア1は、上記の使用状況フラグに対応するデータ領域である使用状況管理領域にデータを書き込む(S123)。さらに、CPUコア1は、その使用状況管理領域に対応する使用状況フラグを使用済みに変更する(S124)。このようにして、一部書き込み済みのアクセス単位領域に対する追加書きが完了する。
【0056】
さらに、S122の判定で、すでに、その使用状況フラグが使用済みになっている場合、すでに、書き込み済みのデータの書き換え処理となる。これは、上記(3)の場合の処理である。なお、S122の判定で、使用状況管理領域が実際に未使用でなかった場合も同一の処理を実行する。この場合、CPUコア1は、割当情報を読み出し、「未使用」領域を検索する(S131)。書き込み先がすでに書き込みになっているため、データを書き換えた後の格納先として、新規に領域を確保するためである。
【0057】
そして、CPUコア1は、「未使用」を示す割当情報の1つを「使用中」に変更する(S132)。そして、CPUコア1は、「使用中」の割当情報に対するデータ領域の先頭からオフセット値分加えたアドレスのデータ領域(使用状況管理領域)にデータを書き込む(S133)。
【0058】
以下、図14を用いて、説明を継続する。次に、CPUコア1は、新データの書き込み先以外の旧データを上記新たな使用状況管理領域にコピーする。すなわち、新データの書き込み先以外のアクセス単位領域内で、使用状況フラグがデータ書き込み済となっているデータをすべて、新データを書き込みしたアクセス単位領域のデータ領域にコピーする(S141)。
【0059】
次に、CPUコア1は、データを書き込んだ使用状況管理領域に対応する使用状況フラグをすべて書き込み済にする(S142)。次に、CPUコア1は、旧データを含むアクセス単位領域の割当情報を「確定」から「書き換え中」情報に変更する(S143)。次に、CPUコア1は、アクセス単位領域の論理アドレスに対応するアドレス情報の物理アドレスを新データの物理アドレスに更新する(S144)。次に、CPUコア1は、新データの割当情報を「確定」に変更する(S145)。そして、CPUコア1は、旧データの割当情報に「削除」を書き込む(S146)。このように、部分書き込み済みの領域が上書きされて新たなアクセス単位領域に格納されることになる。
【0060】
以上述べたように、本実施形態の半導体装置によれば、内蔵フラッシュメモリ3の記憶領域が、消去単位(例えば、8KB)に区分され、消去単位の内部が、書き込みサイズお
よび読み出しサイズ(例えば、128バイト)のアクセス単位領域に分割される。さらに、アクセス単位領域は、例えば、32バイトの使用状況管理領域に分割される。そして、アクセス単位領域が、”未使用”、”使用中”、”確定”または、”消去済み”のいずれであるかが、割当情報によって管理される。また、使用状況管理領域が書き込み済みであるか否かが使用状況フラグによって管理される。したがって、図6に示したように、割当情報を増加させることなく、使用状況フラグによって、細かい単位でデータ領域が書き込み済みであるか、否かを管理できる。
【0061】
使用状況フラグは1ビットで十分であるが、例えば、1バイト確保したとしても、割当情報と比較して小さな容量(上記実施形態の構成の場合256バイト)で、32バイト単位の細かな領域を管理できる。
【0062】
なお、上記では、消去単位を8KBとし、書き込みサイズを128バイトとし、使用状況管理領域を32バイトとしたが、本実施形態の構成は、このようなサイズに限定されるわけではない。例えば、使用状況管理領域を16、8、4バイト等としてもよい。
【0063】
また、上記実施形態では、アドレス情報については、128バイトのアクセス単位で格納した。しかし、これに代えて、アドレス情報についても、アクセス単位よりも小さい使用状況管理領域(例えば、32バイト)に区切り、使用状況フラグで管理してもよい。管理手順は、図9および図10のフローチャートで行った通常のデータに対する手順と同様である。
【0064】
<第2実施形態>
本半導体装置の第2実施形態を図15から図18の図面によって説明する。上記第1実施形態では、割当情報は、消去単位の先頭付近に格納され、アドレス情報は、割当情報と分離されてデータ領域に格納されていた。しかし、内蔵フラッシュメモリ3は、比較的容量が小さいため、アドレス情報としては、より小さな値でもよい。例えば、上述のように、1MBの内蔵フラッシュメモリ3において、128バイト単位のアクセス単位領域を識別するためには13ビットあればよい。したがって、論理アドレスと物理アドレスの組として26ビットあれば足りる。
【0065】
そこで、本実施形態では、4バイトのアドレス情報の下位ビットに、使用状況フラグを格納する。他の構成および作用は、第1実施形態と同様である。そこで、同一の構成要素については、同一の符号を付してその説明を省略する。
【0066】
図15に、本実施形態の消去単位の構成を例示する。本実施形態でも、管理情報31に含まれるアクセス単位領域331−333の構成は、第1実施形態と同様である。ただし、本実施形態では、データ領域32に格納されるアドレス情報の下位4ビットに4つの使用状況フラグを格納する。
【0067】
図16に、この場合の読み出し処理のフローを例示する。この処理でも、処理の開始前(通常は、半導体装置に電源が投入されたとき)、CPUコア1は、すべての消去単位内から、事前にアドレス情報を読み出し、内蔵RAM2に保持している。CPUコア1は、内蔵フラッシュメモリ3のデータを読み出す場合には、その読み出し先の論理アドレスを認識している。そこで、CPUコア1は、内蔵RAM2に保持されたアドレス情報を基に、論理アドレスを物理アドレスに変換する。また、このとき、と使用状況フラグを参照し、オフセットに相当する位置の使用状況フラグを判定する(S41)。
【0068】
次に、使用状況フラグが、書き込み済みを示す場合、CPUコア1は、データの格納先、すなわち、その消去単位内の物理アドレスから、アクセス単位領域のデータを読み出す
(S42)。なお、使用状況フラグが書き込み済みでない場合、CPUコア1は、読み出しエラーとして処理する。
【0069】
図17および図18は、書き込み処理のフローを例示する図である。図17および図18の処理は、S114A、およびS144Aの処理を除いて、図13および図14と同様である。すなわち、本実施形態では、CPUコア1は、図17のS114Aにおいて、アクセス単位領域の論理アドレスに対応するアドレス情報を更新するとともに、データを書き込みした領域に対応する使用状況フラグをデータ書き込み済に変更する。したがって、図13のS115の処理は、S114Aに含まれている。アドレス情報の格納領域の下位ビットに使用状況フラグが格納されているからである。このように、本実施形態では、アドレス情報と使用状況フラグが近接して格納されているので、処理効率が向上する。
【0070】
また、図18のS144Aにおいて、CPUコア1は、アクセス単位領域の論理アドレスに対応するアドレス情報を新データの物理アドレスに更新するとともに、新データを含むアクセス単位領域のデータ領域にデータを書き込みした領域に対応する使用状況フラグをすべて書き込み済にする。したがって、図14のS142の処理は、S144Aに含まれている。
【0071】
以上のように割当情報によってデータ領域の状態(例えば、空き領域)を管理し、データをデータ領域32に書き込み、さらに、アドレス情報および使用状況フラグにしたがって、書き込んだデータを読み出すことができる。
【0072】
また、アドレス情報は、1つのアクセス単位領域(128バイト)の先頭の物理アドレスを保持する。そして、そのアドレス情報の下位4ビットには、そのアクセス単位領域を4つに分割した使用状況管理領域(32ビット)に対応するそれぞれの使用状況フラグを格納する。
【0073】
このように、アドレス情報の下位ビットに使用状況フラグを格納することで、内蔵フラッシュメモリ3のデータ量(使用状況フラグに相当するオーバーヘッド)を節約できる。また、書き込みフローでは、アドレス情報の更新と併せて使用状況フラグを参照または更新しているため、アドレス情報と使用状況フラグを組み合わせることで、処理の効率も向上する。また、読み出しフローでは、アドレス情報と併せて使用状況フラグを参照できるため、処理の効率が向上する。
【図面の簡単な説明】
【0074】
【図1】一実施形態に係る半導体装置の構成例を示す図である。
【図2】内蔵フラッシュメモリの記憶領域の構成図を例示する図である。
【図3】1つの消去単位の内部の構造を示す図である。
【図4】論理アドレス空間と、物理アドレス空間との関係を例示する図である。
【図5】読み出し処理を例示するフローチャートである。
【図6】書き込み処理を例示するフローチャートである。
【図7】一部が書き込みされたアクセス単位領域への追加の書き込み処理を例示するフローチャートである。
【図8】データの書き込みサイズ(および読み出しサイズ)を小さくした場合の問題点を例示する図である。
【図9】半導体装置の1つの消去単位の内部の構造を例示する構成図である。
【図10】使用状況フラグによって管理されるアクセス単位領域の構成を例示する図である。
【図11】書き込み済みのデータを新データに書き換える処理例である。
【図12】第1実施形態の読み出しフローを例示する図である。
【図13】第1実施形態の書き込みフローを例示する図である。
【図14】第1実施形態の書き込みフロー(続き)を例示する図である
【図15】第2実施形態の消去単位の構成を例示する
【図16】第2実施形態の読み出し処理のフローを例示する図である。
【図17】第2実施形態の書き込み処理のフローを例示する図である。
【図18】第2実施形態の書き込み処理(続き)のフローを例示する図である。
【符号の説明】
【0075】
1 CPUコア
2 内蔵RAM
3 内蔵フラッシュメモリ
4 バッテリ
31 割当情報領域
32 データ領域

【特許請求の範囲】
【請求項1】
処理装置からアクセスされ、所定の書き込みサイズでのデータの1回の書き込みと書き込んだデータの読み出しと前記書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の前記書き込みサイズでのデータの再書き込みとが可能な記憶装置であり、
前記管理サイズのデータの記憶領域を識別する情報を格納する管理単位識別部と、
前記管理サイズのデータの記憶領域に含まれる1以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域のデータの有効性を含む割当情報を格納する割当情報格納部と、
前記書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域にデータが書き込まれているか否かを示す分割使用情報を格納する分割使用情報格納部と、
前記処理装置が前記記憶装置との間でデータを読み出しまたは書き込みするときの前記データの格納先を識別する論理識別情報と前記データが前記記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を備える記憶装置。
【請求項2】
前記分割使用情報格納部は、前記アドレス情報格納部と一体に構成され、前記分割使用情報は、それぞれのアドレス情報の余白ビット部分に格納される請求項1に記載の記憶装置。
【請求項3】
処理装置と、前記処理装置からアクセスされ、所定の書き込みサイズでのデータの1回の書き込みと書き込んだデータの読み出しと前記書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の前記書き込みサイズでのデータの再書き込みとが可能な記憶装置とを備える電子装置であり、
前記記憶装置は、前記管理サイズのデータの記憶領域を識別する情報を格納する管理単位識別部と、
前記管理サイズのデータの記憶領域に含まれる1以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域のデータの有効性を含む割当情報を格納する割当情報格納部と、
前記書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域にデータが書き込まれているか否かを示す分割使用情報を格納する分割使用情報格納部と、
前記処理装置が前記記憶装置との間でデータを読み出しまたは書き込みするときの前記データの格納先を識別する論理識別情報と前記データが前記記憶装置内に格納されるときの格納位置との関係を示すアドレス情報を保持するアドレス情報格納部と、を有する電子装置。
【請求項4】
前記分割使用情報格納部は、前記アドレス情報格納部と一体に構成され、前記分割使用情報は、それぞれのアドレス情報の余白ビット部分に格納される請求項3に記載の電子装置。
【請求項5】
前記処理装置は、前記記憶装置からのデータ読み出し時に、前記分割使用情報格納部を参照して、読み出し対象のデータの記憶領域においてデータが書き込み済みか否かを判定する手段を有する請求項3または4に記載の電子装置。
【請求項6】
処理装置からアクセスされ、所定の書き込みサイズでのデータの1回の書き込みと書き込んだデータの読み出しと前記書き込みサイズ以上の管理サイズでのデータ消去とデータ消去後の前記書き込みサイズでのデータの再書き込みとが可能な記憶装置でのデータ管理方法であり、前記処理装置が、
前記管理サイズのデータの記憶領域を識別する情報を管理単位識別部に格納するステップと、
前記管理サイズのデータの記憶領域に含まれる1以上の書き込みサイズの記憶領域に対応して保持され、それぞれの書き込みサイズの記憶領域のデータの有効性を含む割当情報を割当情報格納部に格納するステップと、
前記書き込みサイズの記憶領域を複数に分割した分割書き込みサイズの記憶領域に対応して保持され、それぞれの分割書き込みサイズの記憶領域にデータが書き込まれているか否かを示す分割使用情報を分割使用情報格納部に格納するステップと、
前記処理装置が前記記憶装置との間でデータを読み出しまたは書き込みするときの前記データの格納先を識別する論理識別情報と前記データが前記記憶装置内に格納されるときの格納位置との関係を示すアドレス情報をアドレス情報格納部に保持するステップと、を実行するデータ管理方法。
【請求項7】
前記分割使用情報格納部は、前記アドレス情報格納部と一体に構成され、前記分割使用情報は、それぞれのアドレス情報の余白ビット部分に格納される請求項6に記載のデータ管理方法。
【請求項8】
前記記憶装置からのデータ読み出し時に、前記分割使用情報格納部を参照して、読み出し対象のデータの記憶領域においてデータが書き込み済みか否かを判定するステップをさらに実行する請求項6または7に記載のデータ管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2010−92113(P2010−92113A)
【公開日】平成22年4月22日(2010.4.22)
【国際特許分類】
【出願番号】特願2008−258834(P2008−258834)
【出願日】平成20年10月3日(2008.10.3)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】