(57)【特許請求の範囲】
【請求項１】
メモリを制御するメモリ制御部を備えたメモリ管理装置であって、
前記メモリのデータ領域は第１及び第２の管理領域の単位で管理され、前記第１の管理領域はデータの読み出し及び書き込み単位であり、前記第２の管理領域はデータの消去単位であり、前記第２の管理領域は複数の第１の管理領域を含み、
前記メモリのデータ領域は、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを含み、
前記メモリ制御部は、前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第２の管理領域間の境界と一致するように、前記メモリのデータ領域を管理し、
前記メモリ制御部は、前記メモリのサイズが複数種類ある場合には、前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第２の管理領域の前記複数のサイズ間の最小公倍数となる境界に一致するように、前記メモリのデータ領域を管理する、
メモリ管理装置。
【請求項２】
メモリの領域を設定する方法であって、
前記メモリのデータ領域は第１及び第２の管理領域の単位で管理され、前記第１の管理領域はデータの読み出し及び書き込み単位であり、前記第２の管理領域はデータの消去単位であり、前記第２の管理領域は複数の第１の管理領域を含み、
前記メモリのデータ領域において、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを設定し、
前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第２の管理領域間の境界と一致するようにし、
前記メモリのサイズが複数種類ある場合には、前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第２の管理領域の前記複数のサイズ間の最小公倍数となる境界に一致するように、前記メモリのデータ領域を設定する、
メモリ領域設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを管理するメモリ管理装置、メモリ管理装置を備えたデータ記録装置、及び不揮発性メモリのメモリ領域を設定するメモリ領域設定方法に関する。
【背景技術】
【０００２】
近年、デジタルオーディオプレーヤ、ＩＣレコーダ、及びデジタルカメラなどを代表とするデジタル機器や、ＳＤカード及びＭＭＣカードなどを代表とするメモリカード等において、不揮発性メモリであるフラッシュメモリが多用されている。フラッシュメモリは、プロセスの進化などにより、大容量化してきている。特に、データの記憶媒体としては、大容量化に向くＮＡＮＤ型フラッシュメモリが多用される。【０００３】
ＮＡＮＤ型フラッシュメモリは、品種によりサイズ等は異なるが、例えば、４０９６個の物理的なブロックに分割されている。このブロックは消去の最小単位である。ブロックは、１２８個のページで構成される。ページは、書き込みおよび読み出しの基本単位である。ページは、２０４８バイトのユーザデータ領域と６４バイトの冗長領域とを含む。【０００４】
通常、機器に組み込まれているマイコンやパソコン等において、データの読み書きを行うアプリケーションプログラムは、共通の単位としてセクタ（５１２バイト）単位で記憶媒体のデータを管理することが多い。セクタは、上術した書き込みおよび読み出しの基本単位であるページと異なる場合がある。【０００５】
このようなフラッシュメモリにおいて、記憶されているデータを更新する際、一旦、元データを読み出して、元データと新たなデータとで構成される更新データが消去済みの未使用領域に書き込まれる（例えば、特許文献１参照）。元データが記憶されていた領域は無効領域になる。上述したように、ブロックが消去の最小単位であるため、たとえ、１バイトのデータを更新するだけであっても、ブロックレベルでの読み出し・書き込み・消去が行われる。【０００６】
通常、フラッシュメモリの書き込み（以下、消去を含む。）回数には、限界がある。例えば、ＮＡＮＤ型フラッシュメモリでは、書き込み回数の限界は１０万回程度である。そのため、限界を超えた回数の書き込みが、ある領域に対して行われると、その領域は保証されなくなる。すなわち、破壊されて、読み書きできなくなる可能性がある。また、書き込みだけでなく、読み出しによっても、メモリ疲労は進む。よって、フラッシュメモリを搭載した機器を実現する際は、機器の信頼性を確保するために、通常、特定の物理領域に書き込みが集中しないようにウェアレベリングなどの工夫が施される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２２２２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
同一のフラッシュメモリに、極めて重要なデータ（例えば、その機器を動作させるためのプログラムデータ）とユーザデータが記録される場合、プログラムデータの一部とユーザデータの一部が同一ブロック内に記録されることが起こり得る。そのような場合、ユーザデータの頻繁な書き込み及び消去により、ユーザデータの一部と同一ブロックに記録されたプログラムデータの一部も頻繁に別のブロックに書き換えられてしまう。【０００９】
しかしながら、上述したようなウェアレベリングを行って、特定領域への書き込みが集中しないようにしたとしても、書き込み／読み出し可能な回数が無限になるわけではない。そのため、ユーザデータの書き換えに伴い、同一ブロック内に格納されているプログラムデータが頻繁に書き換えられると、書き込み（消去を含む）／読み出し回数の限界などにより、プログラムデータが破壊されてしまうおそれがあった。プログラムデータが破壊されると、それ以降、機器が動作しなくなってしまうという重大問題を引き起こしてしまう。【００１０】
本発明は、書き込みや読み出し回数に限界を有するようなフラッシュメモリなどを用いたメモリ管理において、プログラムデータのような極めて重要なデータの破壊リスクを低減する、メモリ管理装置、データ記録装置、及びメモリ領域設定方法を提供することを目的とする。具体的には、ユーザデータの書き換えに伴い、プログラムデータが書き換えられることを防ぐ、メモリ管理装置、データ記録装置、及びメモリ領域設定方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のメモリ管理装置は、メモリを制御するメモリ制御部を備えたメモリ管理装置であって、メモリのデータ領域は第１及び第２の管理領域の単位で管理され、第１の管理領域はデータの読み出し及び書き込み単位であり、第２の管理領域はデータの消去単位であり、第２の管理領域は複数の第１の管理領域を含み、メモリのデータ領域は、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを含み、メモリ制御部は、リードオンリーデータ領域とリードライトデータ領域の境界が、第２の管理領域間の境界と一致するように、メモリのデータ領域を管理し、メモリ制御部は、メモリのサイズが複数種類ある場合には、リードオンリーデータ領域とリードライトデータ領域の境界が、第２の管理領域の複数のサイズ間の最小公倍数となる境界に一致するように、メモリのデータ領域を管理する。
【００１６】
本発明のメモリ領域設定方法は、メモリの領域を設定する方法であって、メモリのデータ領域は第１及び第２の管理領域の単位で管理され、第１の管理領域はデータの読み出し及び書き込み単位であり、第２の管理領域はデータの消去単位であり、第２の管理領域は複数の第１の管理領域を含み、メモリのデータ領域において、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを設定し、リードオンリーデータ領域とリードライトデータ領域の境界が、第２の管理領域間の境界と一致するようにし、メモリのサイズが複数種類ある場合には、リードオンリーデータ領域とリードライトデータ領域の境界が、第２の管理領域の前記複数のサイズ間の最小公倍数となる境界に一致するように、メモリのデータ領域を設定する。
【発明の効果】
【００２０】
本発明によれば、読み出しのみ行われるプログラムデータのような極めて重要なデータと、書き込み及び読み出しが行われるユーザデータが、同一のフラッシュメモリに格納される機器において、プログラムデータとユーザデータをそれぞれ格納するための物理記憶領域の境界がブロック間の境界と一致するようにメモリを管理することにより、ユーザデータの書き込み及び読み出しに起因するメモリ劣化によるプログラムデータへの影響を極力排除することができる。そのため、プログラムデータが破壊されるリスクを低減することが可能となる。本発明によれば、コストアップなしに簡易な方法で、重要なデータが破壊されるリスクを低減することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態１のデータ記録装置を示す図
【図２】（ａ）は図１のメモリ管理部の例を示す図、（ｂ）は図１のメモリ管理部の他の例を示す図
【図３】フラッシュメモリのメモリ領域を示す図であって、（ａ）は論理ブロック配置を示す図、（ｂ）は物理ブロック配置を示す図
【図４】論理物理変換テーブルを示す図
【図５】データの書き換えを示す図であって、（ａ）は物理ブロック配置を示す図、（ｂ）は書き換え前の物理ブロックの詳細図、（ｃ）は書き換え後の物理ブロックの詳細図
【図６】本発明の実施形態１のメモリ領域設定方法を含むプログラムデータの書き込み方法を示すフローチャート
【図７】ＮＡＮＤフラッシュメモリの一例を示す図であって、（ａ）は論理ブロック配置を示す図、（ｂ）はＬＢＡ２のブロックの詳細図
【図８】ＮＡＮＤフラッシュメモリの一例を示す図であって、（ａ）は論理ブロック配置を示す図、（ｂ）はＬＢＡ４のブロックの詳細図
【図９】本発明の実施形態２のプログラム書き込み装置を示す図
【図１０】プログラムデータ及びシステムデータが書き込まれた後のブロック配置を示す図であって、（ａ）は論理ブロック配置を示す図、（ｂ）は物理ブロック配置を示す図、（ｃ）は再配置後の物理ブロック配置を示す図
【図１１】本発明の実施形態２のデータの再配置を含むメモリ領域設定方法を示すフローチャート
【発明を実施するための形態】
【００２２】
以下、本発明のメモリ管理装置、データ記録装置、及びメモリ領域設定方法について、図面を参照して説明する。
【００２３】
《実施形態１》
本発明の実施形態１のデータ記録装置は、音データの録音／再生を行うＩＣレコーダである。データ記録装置は、フラッシュメモリのプログラムデータ領域に格納されたプログラムデータを読み出して実行することにより、ＩＣレコーダとしての動作（録音・再生・ＵＳＢ接続等）を行う。本実施形態のデータ記録装置は、フラッシュメモリのメモリ領域を管理するメモリ管理装置としての機能を含む。このメモリ管理装置が、読み出しのみを行うプログラムデータ領域を、書き換えを行うユーザデータ領域とは別のブロックに設ける。すなわち、プログラムデータ領域とユーザデータ領域との境界がブロック間の境界と一致するようにメモリの領域を管理する。これにより、ユーザデータの書き換えに伴ってプログラムデータが書き換えられることを防ぎ、プログラムデータが破壊されるリスクを低減することを可能にする。
【００２４】
＜１．  データ記録装置の構成＞
図１に、実施形態１のデータ記録装置の一例であるＩＣレコーダを示す。データ記録装置１００は、データ記録装置１００内のメモリを管理するメモリ管理部１１０、表示部１０４、操作部１０５、オーディオ処理部１０６、マイク１０７、スピーカ１０８、及び通信部１０９を有する。オーディオ処理部１０６は、エンコーダ１０６ｅ及びデコーダ１０６ｄを含む。
【００２５】
メモリ管理部１１０は、不揮発性メモリであるフラッシュメモリ１０２と、フラッシュメモリ１０２を制御するメモリ制御部１２０と、を含む。メモリ管理部１１０は、フラッシュメモリ１０２の領域を設定するメモリ管理装置と、設定された領域にデータを書き込むデータ記録部としての機能を有する。メモリ制御部１２０は、制御部１０１（マイコン）とＲＡＭ１０３により構成される。
【００２６】
フラッシュメモリ１０２は、本実施形態において、ＮＡＮＤ型フラッシュメモリである。フラッシュメモリ１０２のメモリ領域（データ領域）１０２ｍは、プログラムデータを格納するためのプログラムデータ領域１０２ｐと、システムデータを格納するためのシステムデータ領域１０２ｓと、ユーザデータを格納するためのユーザデータ領域１０２ｙと、を含む。ここで、プログラムデータは、破壊されると機器の動作において致命傷に陥るような重要なプログラムやデータなどである。システムデータは、機器が動作するために利用するリジュームデータなどのパラメータ類などである。ユーザデータは、録音データ、音楽ファイルなどである。プログラムデータは書き換えが行われないデータであるのに対して、システムデータ及びユーザデータは書き替えが行われるデータである。よって、プログラムデータ領域１０２ｐは、データの読み出しのみを行うリードオンリーデータ領域として管理され、システムデータ領域１０２ｓとユーザデータ領域１０２ｙは、データの書き込み及び消去を行うリードライトデータ領域として管理される。
【００２７】
＜２．  データ記録装置の動作＞
このような構成のデータ記録装置１００の動作概要について、簡単に説明する。データ記録装置１００は、音データの録音／再生を行う機器である。データ記録装置１００は、フラッシュメモリ１０２のプログラムデータ領域１０２ｐに格納されたプログラムデータの一部又は全てを読み出して、ＲＡＭ１０３に展開して、プログラムを実行する。そのプログラムがフラッシュメモリ１０２を管理（例えば、データを読み出し／書き込み）することにより、データ記録装置１００はＩＣレコーダとして動作する。以下、ＩＣレコーダとしての録音・再生・ＵＳＢ接続の基本動作について説明する。
【００２８】
＜２．１  録音動作＞
ユーザが、操作部１０５の録音キーを押下すると、マイク１０７は音データを拾う。オーディオ処理部１０６のエンコーダ１０６ｅは、マイク１０７で拾われた音データをエンコード（例えば、ＭＰ３エンコード）する。制御部１０１は、フラッシュメモリ１０２のユーザデータ領域１０２ｙにエンコードされたデータを記録していく。一方、ユーザが、操作部１０５の停止キーを押下すると、オーディオ処理部１０６のエンコーダ１０６ｅは、ＭＰ３エンコードを停止する。制御部１０１は、フラッシュメモリ１０２へのエンコードデータの記録を停止する。
【００２９】
＜２．２  再生動作＞
表示部１０４は、フラッシュメモリ１０２のユーザデータ領域１０２ｙに記録されている音データのリストを表示可能である。ユーザは、表示部１０４に表示されているリストの中から所望の音データを選択することができる。ユーザが、操作部１０５に対して音データの選択を行って再生キーを押下すると、制御部１０１は、所望の音データをフラッシュメモリ１０２から読み出す。オーディオ処理部１０６のデコーダ１０６ｄは、読み出された音データをデコード（本実施形態では、ＭＰ３デコード）し、スピーカ１０８から音を出力する。なお、スピーカ１０８の代わりにインナーホンから音を出力する場合も、同様に行う。
【００３０】
＜２．３  インタフェース動作＞
制御部１０１は、通信部１０９を介して、ＵＳＢ（Universal Serial Bus）やＳＡＴＡ(Serial Advanced Technology Attachment)などの通信インタフェースに準拠してＰＣ等からフラッシュメモリ１０２のユーザデータ領域１０２ｙにＭＰ３データ等を書き込むことが可能である。このとき、書き込まれたＭＰ３データ等を再生することも可能である。
【００３１】
＜２．４  制御部動作−概要＞
次に、制御部１０１の動作について説明する。本実施形態の制御部１０１は、内蔵ＲＡＭ非搭載、且つ、プログラムデータを格納するための内蔵ＮＯＲフラッシュメモリ非搭載のマイクロコンピュータである。本実施形態の制御部１０１は、外付けのＲＡＭ１０３と、プログラムデータ領域１０２ｐにプログラムデータを格納したフラッシュメモリ１０２と、に接続されている。データ記録装置１００がＩＣレコーダとして動作するとき（すなわち、録音・再生・ＵＳＢ接続などを行うとき）、制御部１０１は、フラッシュメモリ１０２のプログラムデータ領域１０２ｐに格納されたプログラムデータの一部又は全てを読み出して、ＲＡＭ１０３に展開して、プログラムを実行する。実行されたプログラムが、フラッシュメモリ１０２のメモリ管理（具体的には、データの読み出し／書き込み）を行うことにより、データ記録装置１００は、ＩＣレコーダとして動作する。
【００３２】
＜２．５  制御部動作−メモリコントローラ＞
図２（ａ）に、本実施形態におけるメモリ管理部１１０の一例を示す。図２（ｂ）に、メモリ管理部１１０の他の例（メモリ管理部１１０’）を示す。図２（ａ）及び（ｂ）は、図１のメモリ管理部１１０のメモリ制御部１２０を別の形式で記載した図である。具体的には、制御部１０１にＲＡＭ１０３を組み込んだ形式で、別の形式で簡略化して記載した図である。なお、メモリ管理部１１０は、種々の形態で表すことができるため、図２（ａ）及び（ｂ）に限定するものではない。
【００３３】
図２（ａ）において、メモリ管理部１１０は、メモリ制御部１２０と、フラッシュメモリ１０２と、を有する。メモリ制御部１２０は、アプリケーションプログラム部８０２とメモリコントローラ８０３を含む。フラッシュメモリ１０２は、メモリ領域１０２ｍを含む。図２（ａ）のメモリ管理部１１０は、メモリコントローラ８０３が、メモリ制御部１２０側に搭載されている例を示している。フラッシュメモリ１０２のメモリ領域１０２ｍは、図１に示すプログラムデータ領域１０２ｐを含み、プログラムデータ領域１０２ｐにアプリケーションプログラムが格納されている。メモリ制御部１２０は、メモリ領域１０２ｍからアプリケーションプログラムを読み出して、アプリケーションプログラム部８０２により、そのアプリケーションプログラムを実行する。
【００３４】
図２（ｂ）において、メモリ管理部１１０’は、メモリ制御部１２０と、フラッシュメモリ１０２と、を有する。メモリ制御部１２０は、アプリケーションプログラム部８０２を含む。フラッシュメモリ１０２は、メモリコントローラ８５３とメモリ領域１０２ｍとを含む。図２（ｂ）のメモリ管理部１１０’は、メモリコントローラ８５３が、フラッシュメモリ１０２側に搭載されている例を示している。フラッシュメモリ１０２のメモリ領域１０２ｍは、図１に示すプログラムデータ領域１０２ｐを含み、プログラムデータ領域１０２ｐにアプリケーションプログラムが格納されている。メモリ制御部１２０は、メモリ領域１０２ｍからアプリケーションプログラムを読み出して、アプリケーションプログラム部８０２により、そのアプリケーションプログラムを実行する。
【００３５】
以下、本実施形態では、図２（ａ）に示すように、メモリ管理部１１０がメモリ制御部１２０側にメモリコントローラ８０３を搭載している場合について説明する。
【００３６】
＜２．６  制御部動作−論理ブロック配置と物理ブロック配置の関係＞
図３及び図４を用いて、フラッシュメモリにおける一般的な論理アドレスと物理アドレスの変換について説明する。図３（ａ）及び（ｂ）に、メモリ領域１０２ｍの論理ブロック配置と物理ブロック配置の対応付けの一例を示す。なお、図中、ＰＢＡは物理ブロックアドレス（Physical Block Address）を示し、ＬＢＡは論理ブロックアドレス（Logical Block Address）を示している。図４に、論理物理変換テーブルの一例を示す。図４の論理物理変換テーブル７００は、メモリ領域１０２ｍの物理アドレスと論理アドレスの対応付けを行う表の一例である。
【００３７】
図３（ａ）の論理ブロック配置は、図１におけるメモリ領域１０２ｍの論理ブロック配置を示し、図３（ｂ）の物理ブロック配置は、図１におけるメモリ領域１０２ｍの物理ブロック配置を示す。図３（ａ）の論理ブロック配置における、論理ブロック９１０（ＬＢＡ０）、論理ブロック９１１（ＬＢＡ１）、論理ブロック９１２（ＬＢＡ２）、論理ブロック９１３（ＬＢＡ３）、論理ブロック９１４（ＬＢＡ４）、及び論理ブロック９１６（ＬＢＡ６）は、それぞれ、図３（ｂ）の物理ブロック配置における、物理ブロック９６１（ＰＢＡ１）、物理ブロック９６６（ＰＢＡ６）、物理ブロック９６３（ＰＢＡ３）、物理ブロック９６９（ＰＢＡ９）、物理ブロック９７１（ＰＢＡ１１）、及び物理ブロック９６２（ＰＢＡ２）に対応している。図２（ａ）のメモリコントローラ８０３は、図４の論理物理変換テーブル７００を備え、物理ブロックアドレスと論理ブロックアドレスの対応付けを行う。なお、論理物理変換テーブル７００は、通常、メモリコントローラ８０３において、生成及び管理されることが多いが、その生成及び管理手法については、ここで制限するものではない。
【００３８】
図２（ａ）のアプリケーションプログラム部８０２は、物理アドレスではなく、論理アドレスに対して、データの読み出し／書き込みのアクセスを行う。メモリコントローラ８０３は、論理アドレスと物理アドレスの対応付け変換を行い、特定の物理ブロックアドレスへの書き込み（消去を含む。）が集中しないように制御する。例えば、メモリコントローラ８０３は、ウェアレベリング技法を駆使する。ウェアレベリング技法とは、論理アドレスと物理アドレスの対応付けを適宜変更する手法である（ここでは、その詳細説明は省略する）。これにより、アプリケーションプログラム部８０２は、特定の物理ブロックアドレスに偏った書き込み（消去を含む。）を行わないような複雑なプログラムを作成する必要がなく、論理的なアドレス（論理ブロック、論理ページ、論理セクタなど）でプログラムを実現することが可能となる。例えば、フラッシュメモリ上に記憶したシステムパラメータなどを度々書き換え更新したとしても、特定の物理ブロックアドレスに対して過度の回数の書き込み（消去を含む。）は行われない。よって、メモリ寿命によるメモリ破壊のリスクが低減される。
【００３９】
＜２．７  制御部動作−データ更新＞
図５を用いて、一般的なデータの書き換えについて説明する。図５（ａ）の物理ブロック配置は、図１のメモリ領域１０２ｍの物理ブロック配置の一例を示す。図５（ｂ）は、データ書き換え前の物理ブロックアドレス２（ＰＢＡ２）の物理ブロックを示す。図５（ｃ）は、データ書き換え後の物理ブロックアドレス４０９４（ＰＢＡ４０９４）の物理ブロックを示す。図５（ｂ）及び（ｃ）に示すように、各物理ブロックは１２８ページにより構成される。ページは、書き込み／読み出しの基本単位であり、ペイロード部（２Ｋバイト）と冗長部（６４バイト）とを含む。
【００４０】
図５（ａ）において、プログラムデータＡ、プログラムデータＢ、及びプログラムデータＣが、それぞれ、物理ブロックアドレス０（ＰＢＡ０）の全ページ、物理ブロックアドレス４（ＰＢＡ４）の全ページ、及び物理ブロックアドレス２（ＰＢＡ２）のページ０に格納されている。また、システムデータＤが物理ブロックアドレス２（ＰＢＡ２）のページ６４に格納されている。また、物理ブロックアドレス２（ＰＢＡ２）は、図４の論理物理変換テーブル７００において、ＬＢＡ６に対応付けられている。
【００４１】
この状況において、アプリケーションプログラム部８０２が、ＬＢＡ６のページ６４に格納されたシステムデータの書き換え（更新）を行うと仮定する。この場合、メモリコントローラ８０３は、図４に示す論理物理変換テーブル７００により、ＬＢＡ６に対応するＰＢＡ２のページ６４に格納されたシステムデータＤの書き換え（更新）を行う。例えば、メモリコントローラ８０３は、ＰＢＡ２のページ０に格納されているプログラムデータＣをＰＢＡ４０９４のページ０にプログラムデータＥとしてコピーし、ＰＢＡ２のページ６４に格納されているシステムデータＤを読み出して必要な箇所を更新して、ＰＢＡ４０９４のページ６４にシステムデータＦとして書き込む。もし、他のページにもデータが存在する場合は、ページ０のようなコピー動作を行うこととなる。これにより、ＰＢＡ４０９４が新たなＬＢＡ６の格納領域となる。ＰＢＡ２は消去することにより、未使用ブロックとなる。すなわち、論理物理変換テーブル７００において、ＬＢＡ６に対応する物理アドレスがＰＢＡ２からＰＢＡ４０９４に書き換えられる。このように、ブロックデータの一部でもデータの更新を行う場合、物理ブロックを丸ごとコピー（ＰＢＡ２の読み出し、ＰＢＡ４０９４への書き込み、及びＰＢＡ２の消去）することになる。
【００４２】
図１に示すフラッシュメモリ１０２において、読み出しのみを行うプログラムデータのためのプログラムデータ領域１０２ｐと、読み出し／書き込みが行われるシステムデータ領域１０２ｓ及びユーザデータ領域１０２ｙが、物理ブロックの境界を意識しない状態で配置されていると、プログラムデータと、システムデータ又はユーザデータが、同一ブロック内に混在して格納されることになる。この場合、システムデータやユーザデータが書き換えられると、全てあるいは一部のプログラムデータが格納されている論理ブロックの物理ブロックアドレスも、頻繁に移動することになる。すなわち、プログラムデータが格納されているブロックのコピー（読み出し及び書き込み）が頻繁に行われることとなってしまう。ＩＣレコーダの場合、録音データが頻繁に書き換えられることが多い。よって、ウェアレベリング手法などで特定の物理ブロックアドレスへの偏った書き込み（消去を含む。）をある程度防いだとしても、ブロックコピー回数が増えると、メモリ劣化が進むため、データ破壊に繋がることが避けられなくなる。さらに、万一、度重なるコピー動作が失敗した場合、プログラムデータを失ってしまうことになる。これは、機器の動作において、非常に大きなリスクを負うことになる。
【００４３】
よって、本実施形態では、以下に詳細を説明するように、制御部１０１は、システムデータ及びユーザデータを、プログラムデータと同一のブロックには書き込まないようにする。すなわち、プログラムデータ領域１０２ｐが、システムデータ領域１０２ｓ及びユーザデータ領域１０２ｙと、別のブロックになるように、メモリ領域１０２ｍを管理する。これにより、上記リスクを低減する。
【００４４】
＜３．メモリ領域の設定及びプログラムの書き込み方法＞
図６〜図８を用いて、メモリ領域の設定及びプログラムデータの書き込み方法（転送方法）について説明する。本実施形態において、プログラムデータは、データ記録装置１００であるＩＣレコーダの製造時又は出荷時に書き込まれる。しかし、古いプログラムデータがプログラムデータ領域１０２ｐに格納されていて、新しいプログラムデータを書き込む場合、つまり、アップデートの動作の場合も、以下に示す説明を同様に適用できる。
【００４５】
＜３．１  フラッシュメモリへの書き込み＞
図１のフラッシュメモリ１０２のメモリ領域１０２ｍに、プログラムデータ領域１０２ｐを設定し、プログラムデータ領域１０２ｐにプログラムデータが格納されていない状態からプログラムデータを書き込む動作について、まず概略を説明する。データ記録装置１００用のプログラムデータ（例えば、サイズ＝５２５８２４バイト）が、データ記録装置１００に接続されたパソコン（ＰＣ）上にあると、データ記録装置１００の制御部１０１は、通信部１０９を介して、そのパソコンからプログラムデータをテンポラリユーザデータ領域に取り込む。ここで、テンポラリユーザデータ領域とは、任意の記憶領域であって、制御部１０１、ＲＡＭ１０３、及びフラッシュメモリ１０２のうち、いずれに存在しても構わない。テンポラリユーザデータ領域は、ＰＣからマスストレージとして見え、ＰＣは、マスストレージの領域に対して、プログラムデータを書き込むことができる。
【００４６】
制御部１０１は、テンポラリユーザデータ領域に格納したプログラムデータのサイズに基づいて、プログラムデータ領域１０２ｐを設定する。制御部１０１は、テンポラリユーザデータ領域に一旦置いたプログラムデータを、プログラムデータ領域１０２ｐに転送し、テンポラリユーザデータ領域に残ったプログラムデータを消去する。この時点で、プログラムデータ領域１０２ｐへのプログラムデータの転送が完了し、データ記録装置１００は、動作可能な状態になる。
【００４７】
具体的には、制御部１０１は、プログラムデータ領域１０２ｐを設定して、プログラムデータをプログラムデータ領域１０２ｐに転送するとき、図６のフローチャートに示す処理を実行する。図６は、本実施形態におけるプログラムデータの書き込み方法のフローチャートの一例を示している。
【００４８】
図７の例を用いて、図６のフローについて説明する。図７は、メモリ領域１０２ｍのデータの配置の一例であって、プログラムデータが書き込まれた後の状態を示している。図７（ａ）は、フラッシュメモリ１０２のメモリ領域１０２の論理ブロック配置を示している。図７（ａ）の論理ブロック配置において、メモリ領域１０２ｍは、プログラムデータ領域、システムデータ領域、ユーザデータ領域、及び予備データ領域を含んでいる。プログラムデータ領域には、プログラムデータＡ、プログラムデータＢ、及びプログラムデータＣが格納されている。システムデータ領域には、システムデータＤが格納されている。図７（ｂ）は、フラッシュメモリ１０２のＬＢＡ２（論理ブロックアドレス２）のブロックデータを示している。
【００４９】
図７において、制御部１０１が扱える共通最小単位であるセクタのサイズは５１２バイト（ＰＣとの親和性も考慮し５１２バイトとしている。）、４セクタを１ページとするページのサイズは２Ｋバイト、１２８ページを１ブロックとするブロックのサイズは２５６Ｋバイト、ブロック数は４０９６個である。よって、１ブロックは、１２８×４＝５１２セクタとなる。この例では、書き込むプログラムデータＡ，Ｂ，Ｃの合計サイズは５２５８２４バイトとする。制御部１０１は、全ブロックにおけるセクタ番号（セクタ０〜セクタ２０９７１５１）を、通し番号で管理する。
【００５０】
図６のフローチャートにおいて、制御部１０１は、まず、フラッシュメモリ１０２のメモリ領域１０２ｍを、プログラムデータ領域１０２ｐ、システムデータ領域１０２ｐ、及びユーザデータ領域１０２ｙに分けて設定し（Ｓ４０１〜Ｓ４０８）、その後、プログラムデータやシステムデータを設定された各領域に書き込む（Ｓ４０９及びＳ４１０）。
【００５１】
＜３．１．１  プログラムデータ領域の決定＞
プログラムデータの転送開始時点で、制御部１０１は、まず、プログラムデータサイズ（＝５２５８２４バイト）を計算する（Ｓ４０１）。次に、フラッシュメモリ１０２のセクタサイズ（＝５１２バイト）、ページサイズ（＝２Ｋバイト）、ブロックサイズ（＝２５６Ｋバイト）、及びブロック数（＝４０９６個）を計算する（Ｓ４０２）。制御部１０１は、ステップＳ４０１及びＳ４０２の結果から、最低限必要なプログラムデータ領域サイズ（＝２ブロック＋１５３６バイト分）を計算する（Ｓ４０３）。
【００５２】
制御部１０１は、プログラムデータ領域１０２ｐの開始セクタと終了セクタとを決定する（Ｓ４０４）。図７（ａ）の論理ブロック配置においては、制御部１０１は、プログラムデータ領域１０２ｐの開始セクタを「ＬＢＡ０のページ０の１セクタ目（つまり、セクタ０）」とし、終了セクタを「ＬＢＡ２の最終ページであるページ１２７の最終セクタ（つまり、セクタ１５３５）」として決定する。本実施形態において、制御部１０１は、プログラムデータ領域１０２ｐの終了セクタを、プログラムデータサイズぎりぎりではなく、ブロックの境界終端まで確保する。すなわち、ＬＢＡ０のページ０〜ＬＢＡ２のページ０までをプログラムデータ領域１０２ｐとするのではなく、ＬＢＡ０のページ０〜ＬＢＡ２のページ１２７までを、プログラムデータ領域１０２ｐとして確保する。これにより、ＬＢＡ２のページ１〜ページ１２７に、ユーザデータなどの書き換えを行うデータが書き込まれることを防ぐ。
【００５３】
＜３．１．２  システムデータ領域の決定＞
システムデータサイズが５１２バイトであるとする。制御部１０１は、最低限必要なシステムデータ領域サイズ（＝１ページ分）を計算する（Ｓ４０５）。制御部１０１は、システムデータ領域１０２ｓの開始セクタと終了セクタを決定する（Ｓ４０６）。図７（ａ）の論理ブロック配置の場合、制御部１０１は、システムデータ領域１０２ｓの開始セクタを「ＬＢＡ３のページ０の１セクタ目（つまり、セクタ１５３６）」とし、終了セクタを「ＬＢＡ３の最終ページであるページ１２７の最終セクタ（つまり、セクタ２０４７）」として決定する。すなわち、制御部１０１は、プログラムデータ領域１０２ｐと同様に、システムデータ領域１０２ｓの終了セクタを、システムデータサイズぎりぎりではなく、ブロックの境界終端まで確保する。なお、本実施の形態では、システムデータを含んであるが、必ずしも必要ではない
【００５４】
＜３．１．３  ユーザデータ領域の決定＞
制御部１０１は、ユーザデータサイズを１０４７２６５２８０バイトとして、最低限必要なユーザデータ領域サイズ（＝３９９６ブロック分）を計算する（Ｓ４０７）。ここで、ユーザデータサイズとは、ＩＣレコーダとして音データを録音したり、ＰＣからＵＳＢ経由でデータを取り込んで記録しておく領域として確保するサイズである。制御部１０１は、ユーザデータ領域１０２ｙの開始セクタと終了セクタとを決定する（Ｓ４０８）。図７（ａ）の論理ブロック配置の場合、制御部１０１は、ユーザデータ領域１０２ｙの開始セクタを「ＬＢＡ４の１セクタ目（つまり、セクタ２０４８）」とし、終了セクタを「ＬＢＡ３９９９の最終ページであるページ１２７の最終セクタ（つまり、セクタ２０４７９９９）」として決定する。なお、説明の簡単化のため、最低限必要なユーザデータ領域サイズをブロックサイズの倍数として説明したが、ブロックサイズの倍数でない場合でも、システムデータと同様に、終了セクタをブロックの境界終端まで確保する。
【００５５】
＜３．１．４  プログラムデータの書き込み＞
以上のように各領域が設定されると、制御部１０１は、プログラムデータの書き込み動作に移る（Ｓ４０９）。制御部１０１は、プログラムデータ５２５８２４バイトをプログラムデータ領域１０２ｐに書き込む。具体的には、プログラムデータを、プログラムデータＡ（２６２１４４バイト）、プログラムデータＢ（２６２１４４バイト）、及びプログラムデータＣ（１５３６バイト）にわけて、それぞれ、ＬＢＡ０、ＬＢＡ１、ＬＢＡ２に書き込む。ＬＢＡ２のページ１以降には、何も書かれない。
【００５６】
＜３．１．５  システムデータの書き込み＞
次に、制御部１０１はシステムデータの書き込み動作に移る（Ｓ４１０）。制御部１０１は、システムデータ５１２バイトをシステムデータ領域１０２ｓに書き込む。具体的には、ＬＢＡ３に書き込む。ＬＢＡ３のページ１以降は、何も書かれない。
【００５７】
以上により、プログラムデータの転送が完了する。プログラムデータがプログラムデータ領域１０２ｐに転送された後、データ記録装置１００は、上述した録音動作、再生動作などを行うことができるようになる。
【００５８】
以上のように各領域を設定することにより、プログラムデータ領域１０２ｐは、読み出し／書き込みが行われるシステムデータ領域１０２ｓ及びユーザデータ領域１０２ｙと、同じ物理ブロックに共存することがなくなる。言い換えると、データの読み出しのみを行うプログラムデータ領域１０２ｐと、データの書き込み及び消去を行うシステムデータ領域１０２ｓ及びユーザデータ領域１０２ｙとの境界が、物理ブロックの境界と一致する。そのため、例えば、図７において、システムデータの更新（書き換え）を頻繁に行った場合、ＬＢＡ３に対応する物理ブロックのコピー動作が頻繁に起こるだけとなり、プログラムデータが格納されているＬＢＡ０〜ＬＢＡ２に対応した物理ブロックのコピーは一切発生しない。また、例えば、ユーザデータの更新（書き換え）が頻繁に行われた場合、ＬＢＡ４〜ＬＢＡ３９９９に対応する物理ブロックのコピー動作が頻繁に起こるだけであり、プログラムデータが格納されているＬＢＡ０〜ＬＢＡ２に対応した物理ブロックのコピーは一切発生しない。よって、上述したメモリ破壊のリスクを低減することが可能になる。
【００５９】
なお、フラッシュメモリの種類が１つの場合（すなわち、複数のフラッシュメモリにおいて、１ブロック当たりのセクタ数が同一の場合）は、上述した方法により、各領域を設定すれば良い。一方、フラッシュメモリの種類が複数ある場合（すなわち、複数のフラッシュメモリにおいて、１ブロック当たりのセクタ数が異なる場合）は、以下に示すように、複数のフラッシュメモリにおいて各領域がセクタ番号レベルで共通になるように設定すると良い。これにより、記憶容量の異なるＩＣレコーダを実現する際にプログラムを共通にすることができる。
【００６０】
＜３．２  異なる種類が存在する場合のフラッシュメモリへの書き込み＞
図８に、図７と異なるメモリ領域１０２ｍの配置を示す。図８において、制御部１０１が扱える共通最小単位であるセクタのサイズは５１２バイト（ＰＣとの親和性も考慮し５１２バイトとする）、４セクタを１ページとするページのサイズは２Ｋバイト、６４ページを１ブロックとするブロックのサイズは１２８Ｋバイト、ブロック数は８１９２個である。１ブロックは、６４×４＝２５６セクタとなる。図８の場合、プログラムデータのサイズは５２５８２４バイトである。制御部１０１は、全ブロックにおけるセクタ番号（セクタ０〜セクタ２０９７１５１）を通し番号で管理する。
【００６１】
図８は、図７と異なるメモリ領域１０２ｍのデータの配置の一例であって、図６に示すフローに従って各領域が設定され、プログラムデータ及びシステムデータが書き込まれた後の状態を示している。図８（ａ）は、フラッシュメモリ１０２のメモリ領域１０２の論理ブロック配置を示している。図８（ａ）の論理ブロック配置において、メモリ領域１０２ｍは、プログラムデータ領域、システムデータ領域、ユーザデータ領域、及び予備データ領域を含む。プログラムデータ領域には、プログラムデータＡ、プログラムデータＢ、プログラムデータＣ、プログラムデータＤ、及びプログラムデータＥが書き込まれている。システムデータ領域には、システムデータＦが書き込まれている。図８（ｂ）は、フラッシュメモリ１０２のＬＢＡ４（論理ブロックアドレス４）のブロックデータを示している。
【００６２】
＜３．２．１  複数のフラッシュメモリに対応するためのブロック境界の共通化＞
図７と図８の１ブロックあたりのセクタ数を比較すると、図７の物理ブロック配置では、１ブロックあたり２５６セクタである。一方、図８の物理ブロック配置では、１ブロックあたり５１２セクタである。制御部１０１は、プログラムデータ転送及びＩＣレコーダとしての機器動作において、セクタ単位でフラッシュメモリ１０２にアクセスする。そのため、複数種類のいずれかのフラッシュメモリを搭載した記憶容量の異なるＩＣレコーダを実現する際、プログラムの共通化のために、プログラムデータ領域１０２ｐ、システムデータ領域１０２ｓ、及びユーザデータ領域１０２ｙを、セクタ番号レベルで共通化することが得策である。よって、例えば、図７と図８の２種類のフラッシュメモリがある場合、この２種類のフラッシュメモリのそれぞれのブロックサイズの最小公倍数である５１２セクタ分（すなわち、図８における２ブロック分）を共通ブロックと定義し、制御部１０１は、共通ブロック（２ブロック分）の単位で領域を決定する。
【００６３】
＜３．２．２  プログラムデータ領域の決定＞
図６のフローチャートを参照して、図８におけるメモリ領域の決定及びプログラム書き込み方法を説明する。制御部１０１は、プログラムデータの転送開始時点で、まず、プログラムデータサイズ（＝５２５８２４バイト）を計算する（Ｓ４０１）。次に、フラッシュメモリ１０２のセクタサイズ（＝５１２バイト）、ページサイズ（＝２Ｋバイト）、ブロックサイズ（＝１２８Ｋバイト）、及びブロック数（＝８１９２個）を計算する（Ｓ４０２）。制御部１０１は、ステップＳ４０１及びＳ４０２の結果から、最低限必要なプログラムデータ領域サイズ（＝４ブロック＋１５３６バイト分）を計算する（Ｓ４０３）。
【００６４】
制御部１０１は、プログラムデータ領域１０２ｐの開始セクタと終了セクタとを決定する（Ｓ４０４）。図８（ａ）に示す論理ブロック配置においては、制御部１０１は、プログラムデータ領域１０２ｐの開始セクタを「ＬＢＡ０のページ０の１セクタ目（つまり、セクタ０）」とし、終了セクタを「ＬＢＡ５の最終ページであるページ６３の最終セクタ（つまり、セクタ１５３５）」として決定する。ここで、制御部１０１は、プログラムデータ領域１０２ｐの終了セクタを、プログラムデータサイズぎりぎりではなく、且つ、ブロック境界終端ではなく、共通ブロックの境界終端まで確保する。すなわち、ＬＢＡ４の最終ページであるページ６３の最終セクタ（つまり、セクタ１２７９）ではなく、共通ブロックを配慮して、ＬＢＡ５の最終ページであるページ６３の最終セクタ（セクタ１５３５）まで確保する。これにより、ＬＢＡ４のページ１〜ＬＢＡ５の最終ページに、ユーザデータなどの書き換えを行うデータが書き込まれることを防ぐ。
【００６５】
＜３．２．３  システムデータ領域の決定＞
システムデータサイズが５１２バイトであるとする。制御部１０１は、最低限必要なシステムデータ領域サイズ（＝１ページ分）を計算する（Ｓ４０５）。制御部１０１は、システムデータ領域１０２ｓの開始セクタと終了セクタを決定する（Ｓ４０６）。図８（ａ）の論理ブロック配置の場合、制御部１０１は、システムデータ領域１０２ｓの開始セクタを「ＬＢＡ６のページ０の１セクタ目（つまり、セクタ１５３６）」とし、終了セクタを「ＬＢＡ７の最終ページであるページ１２７の最終セクタ（つまり、セクタ２０４７）」として決定する（Ｓ４０６）。すなわち、制御部１０１は、プログラムデータ領域１０２ｐと同様に、システムデータ領域１０２ｓの終了セクタを、システムデータサイズぎりぎりではなく、且つ、ブロック境界終端ではなく、共通ブロックの境界終端まで確保する。具体的には、ＬＢＡ６の最終ページであるページ１２７の最終セクタ（つまり、セクタ１７９１）ではなく、共通ブロックを配慮し、ＬＢＡ７の最終ページであるページ１２７の最終セクタ（つまり、セクタ２０４７）まで確保する。
【００６６】
＜３．２．４  ユーザデータ領域の決定＞
次に、ユーザデータサイズを１０４７２６５２８０バイトとして、最低限必要なユーザデータ領域サイズ（＝７９９２ブロック分）を計算する（Ｓ４０７）。制御部１０１は、ユーザデータ領域１０２ｙの開始セクタと終了セクタとを決定する（Ｓ４０８）。図８の論理ブロック配置の場合、制御部１０１は、ユーザデータ領域２０２ｙの開始セクタを「ＬＢＡ８の１セクタ目（つまり、セクタ２０４８）」とし、終了セクタを「ＬＢＡ７９９９の最終ページであるページ１２７の最終セクタ（つまり、セクタ２０４７９９９）」として決定する。なお、説明の簡単化のため、最低限必要なユーザデータ領域サイズを共通ブロックサイズの倍数として説明したが、共通ブロックサイズの倍数でない場合でも、システムデータと同様に、終了セクタを共通ブロックの境界終端まで確保する。
【００６７】
＜３．２．５  プログラムデータの書き込み＞
以上のように各領域が設定されると、制御部１０１は、プログラムデータの書き込み動作に移る（Ｓ４０９）。制御部１０１は、プログラムデータ５２５８２４バイトをプログラムデータ領域１０２ｐに書き込む。具体的には、プログラムデータを、プログラムデータＡ（１３１０７２バイト）、プログラムデータＢ（１３１０７２バイト）、プログラムデータＣ（１３１０７２バイト）、プログラムデータＤ（１３１０７２バイト）、及びプログラムデータＥ（１５３６バイト）にわけて、それぞれ、ＬＢＡ０、ＬＢＡ１、ＬＢＡ２、ＬＢＡ３、ＬＢＡ４に書き込む。ＬＢＡ４のページ１以降及びＬＢＡ５には、何も書かれない。
【００６８】
＜３．２．６  システムデータの書き込み＞
次に、制御部１０１はシステムデータの書き込み動作に移る（Ｓ４１０）。制御部１０１は、システムデータ５１２バイトをシステムデータ領域１０２ｓに書き込む。具体的には、ＬＢＡ６に書き込む。ＬＢＡ６のページ１以降及びＬＢＡ７には、何も書かれない。
【００６９】
以上により、プログラムデータ及びシステムデータの転送が完了する。プログラムデータがプログラムデータ領域１０２ｐに転送された後、データ記録装置１００は、上述した録音動作及び再生動作などを行うことができるようになる。
【００７０】
以上のように、異なるフラッシュメモリ（１ブロック当たりのセクタ数が異なる。）を搭載した２種類以上の機器において、プログラムデータとユーザデータの物理記憶位置を共通ブロック単位で区別して管理することにより、プログラムデータの破壊リスクを低減するとともに、アプリケーションプログラムの共用化（開発効率アップ）を図ることが可能となる。具体的には、上記のように各領域を設定することにより、フラッシュメモリの種類が異なるデータ記録装置１００を構成する場合でも、各領域を区切るセクタアドレスを共通化でき、データの読み書きを共通したセクタアドレスで管理できる。よって、プログラムの共通化が可能となり、開発効率を高めることが可能となる。
【００７１】
また、プログラムデータ領域１０２ｐと、読み出し／書き込みが行われるシステムデータ領域１０２ｓ及びユーザデータ領域１０２ｙが、同じ物理ブロックに共存することがなくなる。言い換えると、データの読み出しのみを行うプログラムデータ領域１０２ｐと、データの書き込み及び消去を行うシステムデータ領域１０２ｓ及びユーザデータ領域１０２ｙとの境界が、物理ブロック間の境界と一致する。そのため、例えば、図８において、システムデータの更新（書き換え）が頻繁に行われたとしても、ＬＢＡ６に対応する物理ブロックのコピー動作が頻繁に起こるだけとなる。また、例えば、ユーザデータの更新（書き換え）が頻繁に行われたとしても、ＬＢＡ８〜ＬＢＡ７９９９に対応する物理ブロックのコピー動作が頻繁に起こるだけである。よって、プログラムデータが格納されているＬＢＡ０、ＬＢＡ１、ＬＢＡ２、ＬＢＡ３、ＬＢＡ４に対応した物理ブロックのコピーは一切発生しない。これにより、メモリ破壊のリスクを低減することが可能となる。
【００７２】
本実施形態によれば、プログラムデータの破壊を防ぐことができるため、１つのメモリでプログラムデータとユーザデータとを格納することができる。例えば、従来のＩＣレコーダ等のデータ記録装置は、プログラムデータの破壊を防ぐために、プログラムデータを格納するためのメモリ（例えば、ＮＯＲ型フラッシュメモリ）と、録音データ等のユーザデータを格納するためのメモリ（例えば、ＮＡＮＤ型フラッシュメモリ）とをそれぞれ備えていた。しかし、本実施形態によれば、１つのメモリにプログラムデータとユーザデータとを格納しても、プログラムデータの破壊を防ぐことができるため、メモリを１つにすることができる。例えば、プログラム用の専用のメモリを設ける必要がなくなる。よって、データ記録装置１００のコストを削減することができる。
【００７３】
なお、本実施形態では、データ記録装置１００として、不揮発性記憶媒体であるフラシュメモリ１０２に対してオーディオデータの読み書きを行うＩＣレコーダを例にして説明したが、データ記録装置１００の種類は本実施形態に限定されない。データ記録装置１００は、不揮発性記憶媒体に対して、ユーザデータの読み書きを行う機器であればよい。例えば、データ記録装置１００は、デジタルカメラや携帯端末であってもよい。
【００７４】
また、本実施形態では、データ記録装置１００の一部（具体的には、メモリ管理部１１０）がメモリ管理装置である場合を例にして説明したが、メモリ管理装置は、データ記録装置１００の機能の一部として、データ記録装置１００内に設けられていなくてもよい。例えば、メモリ管理装置は、データ記録装置１００とは別の装置の内部に設けられてもいいし、メモリ管理装置自体が１つの装置として機能するようなものであってもよい。例えば、メモリ管理装置は、プログラムデータ領域を設定する装置やプログラムデータが書き込まれたフラッシュメモリを生産するプログラム書き込み装置の機能の一部又は全部であってもよい。
【００７５】
本実施形態では、フラッシュメモリ１０２がＮＡＮＤ型フラッシュメモリである場合について説明したが、フラッシュメモリ１０２の種類は本実施形態に限定されない。例えば、本実施形態のフラッシュメモリ１０２の代わりに、ＮＯＲ型フラッシュメモリ及びＥＥＰＲＯＭなど、他のあらゆる不揮発性記憶媒体を使用してもよい。
【００７６】
本実施形態では、マイコンとして制御部１０１を使用し、外付けＲＡＭとしてＲＡＭ１０３を設ける構成を例にして説明したが、ＲＡＭ１０３は制御部１０１に内蔵されていてもよい。
【００７７】
本実施形態では、フラッシュメモリ１０２に、プログラムデータ、システムデータ、及びユーザデータが格納されるものとして説明したが、フラッシュメモリ１０２に格納されるデータの種類は、本実施形態に限定されない。プログラムデータと、読み書きを行うその他のデータ（例えば、ユーザデータ）が、同一のフラッシュメモリに格納される場合に、本実施形態を適用することができる。
【００７８】
本実施形態においては、プログラムデータの書き込み（Ｓ４０９）の直前に、領域を設定する例で説明したが、領域の設定はプログラムデータの書き込み（転送処理）とは別のタイミングで行ってもよい。例えば、Ｓ４０９の前処理（Ｓ４０１、Ｓ４０２、Ｓ４０３、Ｓ４０５、Ｓ４０７を含む。）は、必ずしも転送処理中に行う必要はなく、あらかじめ計算しておいてもよい。
【００７９】
《実施形態２》
本実施形態のメモリ管理装置は、工場等に設けられて、プログラムデータが書き込まれたフラッシュメモリを大量に生産する装置（プログラム書き込み装置）である。本実施形態のプログラム書き込み装置は、プログラムデータの書き込み先の物理ブロックを再配置し、再配置済みのフラッシュメモリをマスタとして、そのフラッシュメモリをコピーすることにより、短時間での大量のコピー（すなわち、書き込み済みフラッシュメモリの生産）を可能にする。
【００８０】
＜１．メモリ管理装置の構成＞
図９に、本実施形態におけるメモリ管理装置の一例であるプログラム書き込み装置を示す。プログラム書き込み装置１０００は、ＲＯＭライタ１００１と、パーソナルコンピュータ（ＰＣ）１００２と、を含む。ＲＯＭライタ１００１は、ＰＣ１００２に接続されている。ＲＯＭライタ１００１は、ＰＣ１００２に保存されているデータを、ブランクフラッシュメモリ１００４、１００５等に書き込むことができる。また、ＲＯＭライタ１００１は、書き込み済みフラッシュメモリ１００３に記録されているデータを、書き込み済みフラッシュメモリ１００３から読み出して、ＰＣ１００２に保存することができる。ＰＣ１００２は、ＲＯＭライタ１００１からデータを読み出し、読み出したデータを加工し、加工したデータをブランクフラッシュメモリ１００４、１００５に書き込むことが可能である。本実施形態において、書き込み済みフラッシュメモリ１００３及びブランクフラッシュメモリ１００４、１００５は、ＮＡＮＤ型フラッシュメモリである。
【００８１】
＜２．メモリ管理装置の動作＞
プログラム書き込み装置（メモリ管理装置）１０００の動作について、図１０及び図１１を用いて説明する。図１０（ａ）及び（ｂ）は、書き込み済みフラッシュメモリ１００３にプログラムデータ及びシステムデータが書き込まれている状態を示している。図１０（ａ）は論理ブロックにおける配置を示し、図１０（ｂ）は物理ブロックにおける配置を示している。図１０（ａ）の論理ブロック配置において、プログラムデータ領域には、プログラムデータＡ、プログラムデータＢ、プログラムデータＣ、プログラムデータＤ、及びプログラムデータＥが書き込まれている。システムデータ領域には、システムデータＦが書き込まれている。図１０（ｂ）の物理ブロック配置は、図１０（ａ）の論理ブロック配置の各ブロックを物理配置に並べ替えたものであり、論理ブロック配置に含まれていたプログラムデータやシステムデータを含む。図１０（ｃ）は、本実施形態において、ＰＣ１００２上で、図１０（ｂ）の物理ブロック配置に含まれていたプログラムデータやシステムデータを再配置した後の物理ブロック配置を示している。
【００８２】
プログラムデータ及びシステムデータが、例えば、実施形態１のメモリ管理装置（データ記録装置１００のメモリ管理部１１０）により、フラッシュメモリに書き込まれると、図１０（ａ）及び図１０（ｂ）に示す書き込み済みフラッシュメモリ１００３の状態になる。具体的には、図１０（ａ）の論理ブロック配置に示すように、プログラムデータＡはＬＢＡ０、プログラムデータＢはＬＢＡ１、プログラムデータＣはＬＢＡ２、プログラムデータＤはＬＢＡ３、プログラムデータＥはＬＢＡ４に格納され、システムデータＦはＬＢＡ６に格納された状態になる。
【００８３】
＜３．従来手法の動作＞
まず、従来の一般的なフラッシュメモリのプログラムデータ及びシステムデータのコピーについて説明する。プログラムデータが書き込まれた書き込み済みフラッシュメモリ１００３がＲＯＭライタ１００１に装着されると、従来のメモリ管理装置は、書き込み済みフラッシュメモリ１００３からプログラムデータ及びシステムデータを読み出す。ＲＯＭライタ１００１は、フラッシュメモリに対して、論理アドレスでアクセスを行うのではなく、物理アドレスでアクセスを行う。よって、例えば、プログラムデータ及びシステムデータが格納される可能性のある場所がＰＢＡ０〜ＰＢＡ１３と決まっている場合は、その１４ブロック分のデータを読み出す。
【００８４】
次に、プログラムデータ及びシステムデータが書き込まれていないブランクフラッシュメモリ１００４がＲＯＭライタ１００１に装着されると、ＲＯＭライタ１００１は、物理ブロック配置の１４ブロック分のデータを、ブランクフラッシュメモリ１００４に書き込む。この時の書き込みに要する時間は、１４ブロック分のデータを書き込む（及びベリファイ等を含む。）時間となる。これにより、ブランクフラッシュメモリ１００４は、プログラムデータ等が書き込まれた状態になる。その後、さらにコピーを繰り返す場合は、別のブランクフラッシュメモリ１００５がＲＯＭライタ１００１に装着される。ＲＯＭライタ１００１は、物理ブロック配置の１４ブロック分のデータを、ブランクフラッシュメモリ１００５に書き込む。この動作を繰り返すことにより、メモリ管理装置は、プログラムデータが書き込まれたフラッシュメモリを複数個生産する。
【００８５】
アプリケーションプログラムは論理アドレスしか認識できないため、実施形態１のデータ記録装置１００等により論理ブロック配置において連続した領域にプログラムデータが書き込まれても、実際には図１０（ｂ）の物理ブロック配置に示すように離れた位置に書き込まれることになる。ＲＯＭライタ１００１は、フラッシュメモリに対して、物理アドレスでしかアクセスすることができない。ＲＯＭライタ１００１は、プログラムデータが物理ブロックのどこに配置されているかがわからないため、例えば、図１０（ｂ）に示す、ＰＢＡ１，３，６，９，１１のみを読み出すことができない。そのため、例えば、フラッシュメモリの全領域、つまり、物理ブロックの先頭ブロック（ＰＢＡ０）から物理ブロックの最終ブロックまでのように、プログラムが格納される可能性のある物理ブロックを全て読み出して、読み出した全ての物理ブロック（空きブロックを含む。）をブランクフラッシュメモリに書き込むことになる。よって、従来のメモリ管理装置は、短時間で、書き込み済みフラッシュメモリを大量に生産することができない。そこで、本実施形態では、以下に示すように、マスタとなる書き込み済みフラッシュメモリの物理ブロックの配置を再配置する。
【００８６】
＜４．本実施形態における手法＞
＜４．１  プログラムデータ・システムデータの読み出し＞
図１１に、実施形態２における、メモリ領域設定（具体的には、プログラムデータの再配置）を含むプログラム格納方法のフローチャートを示す。実施形態１のデータ記録装置１００等により、プログラムデータ及びシステムデータが既に格納された書き込み済みフラッシュメモリ１００３がＲＯＭライタ１００１に装着されると、ＲＯＭライタ１００１は、書き込み済みフラッシュメモリ１００３からプログラムデータ及びシステムデータを読み出す（Ｓ１１０１）。
【００８７】
プログラムデータは、図１０（ａ）の論理ブロック配置のように、書き込み済みフラッシュメモリ１００３の連続した領域ＬＢＡ０〜ＬＢＡ４に格納されている。しかし、実際は、図１０（ｂ）の物理ブロック配置のように、バラバラに配置されている（図４の論理物理変換テーブル７００参照）。ＲＯＭライタ１００１は、フラッシュメモリに対して、物理アドレスでアクセスを行うものであるため、ＰＢＡ１，３，６，９，１１のみを読み出すことができない。すべてのプログラムデータ及びシステムデータを読み出すのに、予めデータが格納されている物理ブロックアドレスがわかっている場合は、ＲＯＭライタ１００１は、その最終の物理ブロック（ＰＢＡ）までのブロックデータを読み出せばよい。一方、予めデータが格納されている物理ブロックアドレスがわからない場合は、かなり余裕を持った個数のブロックを読み出して中身を確認するか、又は、全領域のブロックを読み出す必要がある。図１０（ｂ）の例においては、予めプログラムデータ及びシステムデータが、ＰＢＡ０〜ＰＢＡ１３のどこかに格納されていることがわかっていることを前提とする。本実施形態において、ＲＯＭライタ１００１は、ＰＢＡ０〜ＰＢＡ１３までの１４ブロック分のデータを読み出す。
【００８８】
図１０（ｂ）の物理ブロック配置に示すように、プログラムデータＡはＰＢＡ１、プログラムデータＢはＰＢＡ６、プログラムデータＣはＰＢＡ３、プログラムデータＤはＰＢＡ９、プログラムデータＥはＰＢＡ１１に配置されている。また、システムデータＦはＰＢＡ２に配置されている。ＲＯＭライタ１００１は、読み出した１４ブロック分のデータをＰＣ１００２に送信する。これにより、読み出されたデータが、ＰＣ１００２に取り込まれる。
【００８９】
＜４．２  プログラムデータ・システムデータの再配置＞
本実施形態において、プログラム書き込み装置１０００は、ＰＣ１００２上で、プログラムデータとシステムデータが書き込まれた物理ブロックの再配置を行う（Ｓ１１０２）。すなわち、図１０（ｂ）の物理ブロック配置を図１０（ｃ）の物理ブロック配置のように並べ替える。具体的には、ＰＣ１００２は、物理ブロック配置を仮想作成する。次に、物理ブロック配置をＰＢＡ０からサーチしていき、最初に見つかったプログラムデータＡが含まれる物理ブロックＰＢＡ１を、物理ブロック配置のＰＢＡ０に配置する。ここで、データが格納されている物理ブロックには、空きブロックに対して、識別可能となるような仕組みを含んでおく。ＰＣ１００２は、次に見つかったシステムデータＦが含まれる物理ブロックＰＢＡ２を、物理ブロック配置のＰＢＡ１に配置する。その後、順に、プログラムデータＣが含まれる物理ブロックＰＢＡ３を物理ブロック配置のＰＢＡ２に配置し、プログラムデータＢが含まれる物理ブロックＰＢＡ６を物理ブロック配置のＰＢＡ３に配置し、プログラムデータＤが含まれる物理ブロックＰＢＡ９を物理ブロック配置のＰＢＡ４に配置し、プログラムデータＥが含まれる物理ブロックＰＢＡ１１を、物理ブロック配置のＰＢＡ５に配置する。これにより、物理ブロック配置（６ブロック分）が完成する。ＰＣ１００２は、完成した６ブロック分の物理ブロック配置をＲＯＭライタ１００１に装着された別のブランクフラッシュメモリに書き込む。論理物理変換テーブル７００により、再配置された後の物理アドレスを論理アドレスに対応させる。これにより、プログラムデータ領域１０２ｐ及びシステムデータ領域１０２ｓは、ＰＢＡ０〜ＰＢＡ５に設定されることになる。なお、分割されたプログラムデータの順序が予めわかっている場合は、その順序で再配置をおこなってもよい。このフラッシュメモリがマスターフラッシュＲＯＭとなる。
【００９０】
＜４．３  プログラムデータ・システムデータの書き込み＞
プログラムデータ及びシステムデータが書き込まれていないブランクフラッシュメモリ１００４がＲＯＭライタ１００１に装着されると、ＲＯＭライタ１００１は、プログラムデータ領域１０２ｐ及びシステムデータ領域１０２ｓである物理ブロック配置の６ブロック分のデータを、ブランクフラッシュメモリ１００４に書き込む（Ｓ１１０３）。ステップＳ１１０２により、プログラムデータ及びシステムデータが書き込まれている物理ブロックを再配置しているため、書き込みに要する時間は、６ブロック分のデータを書き込む（及びベリファイ等）時間となる。これは、従来の手法による８０００ブロック以上分の書き込みに要する時間よりも短い。別のブランクフラッシュメモリ１００５がＲＯＭライタ１００１に装着され、プログラムデータ及びシステムデータが書き込まれたフラッシュメモリをさらに生成する場合は（Ｓ１１０４でＮｏ）、ＲＯＭライタ１００１は物理ブロック配置の６ブロック分のデータを別のブランクフラッシュメモリ１００５に書き込む（Ｓ１１０３）。これを繰り返すことにより、プログラムデータ及びシステムデータが書き込まれたフラッシュメモリが大量に生産される。データのコピーを終了する場合（Ｓ１１０４でＹｅｓ）、ＲＯＭライタ１００１はデータのコピーを終了する。
【００９１】
本実施形態のプログラム書き込み装置１０００により、プログラムデータが書き込まれたフラッシュメモリ（すなわち、プログラムデータ領域及びシステムデータ領域がＰＢＡ０〜ＰＢＡ５に設定されたフラッシュメモリ）は、例えば、ＩＣレコーダ等のデータ記録装置に組み込まれる。
【００９２】
なお、図１０（ｃ）の例では、システムデータＦがプログラムデータＡとプログラムデータＣとの間に配置されているが、プログラムデータとシステムデータを分けて配置することがより好ましい。例えば、システムデータＦは、プログラムデータＥの次のブロックに配置すると良い。これにより、プログラムデータ領域が連続した物理ブロックで構成される。
【００９３】
上記のように、物理的に分散した物理ブロックに配置されたプログラムデータを、物理的に連続した物理ブロックに再配置して、フラッシュメモリに格納することにより、実施形態１で説明したようなメモリ破壊のリスクを低減する効果を維持したまま、プログラムデータを格納したフラッシュメモリをＲＯＭライタ等で大量に生産する際におけるＲＯＭライタでの書き込み時間の削減を図ることが可能となる。すなわち、プログラムデータの書き込み先を再配置することにより、物理ブロック配置において読み出すべきプログラムデータ領域を小さくできる。よって、ＲＯＭライタ等で書き込むべきデータのサイズを削減でき、書き込み時間を短縮できる。
【００９４】
本実施形態においては、プログラムデータと共にシステムデータが、ＲＯＭライタ１００１により、書き込み済みフラッシュメモリからブランクフラッシュメモリに書き込まれる場合を例にして説明したが、システムデータは必ずしもブランクフラッシュメモリに書き込む必要はない。少なくともプログラムデータを書き込むものであればよい。この場合、プログラムデータの再配置により、プログラムデータ領域が連続した物理ブロックに設定される。
【００９５】
なお、本実施形態では、メモリ管理装置として、ＲＯＭライタ１００１及びＰＣ１００２を含むプログラム書き込み装置１０００を例にして説明したが、メモリ管理装置の構成は本実施形態に限定されない。フラッシュメモリ１００３の物理ブロック（物理セクタや物理ページなどの物理アドレスであれば同様）に対してデータの読み出し／再配置／書き込みができる機器であれば、本実施形態と同様の構成とみなすことができるため、それらを排除しない。
【００９６】
本実施形態では、フラッシュメモリ１００３，１００４，１００５がＮＡＮＤ型フラッシュメモリである場合について説明したが、フラッシュメモリ１００３，１００４，１００５の種類は本実施形態に限定されない。例えば、本実施形態のフラッシュメモリ１００３，１００４，１００５の代わりに、ＮＯＲ型フラッシュメモリ及びＥＥＰＲＯＭなど、他のあらゆる不揮発性記憶媒体を使用してもよい。
【００９７】
本実施形態では、フラッシュメモリに、プログラムデータ、システムデータ、及びユーザデータが格納されるような場合を例にして説明したが、フラッシュメモリに格納されるデータの種類は、本実施形態に限定されない。プログラムデータと、読み書きを行うその他のデータ（例えば、ユーザデータ）が、同一のフラッシュメモリに格納される場合に、本実施形態を適用することができる。また、本実施形態では、プログラムデータとシステムデータを書き込むものとして説明したが、書き込むデータの種別や個数はこれらに限定するものではない。様々な組み合わせであっても、本実施形態と同様の構成とみなすことができるため、それらを排除しない。
【産業上の利用可能性】
【００９８】
本発明は、読み出しのみ行われるプログラムデータのような極めて重要なデータの破壊のリスクを低減することができるという効果を有し、フラッシュメモリを搭載したＩＣレコーダ及び半導体音楽プレーヤなどに有用である。
【符号の説明】
【００９９】
１００      データ記録装置
１０１      制御部
１０２      フラッシュメモリ
１０２ｐ    プログラムデータ領域
１０２ｓ    システムデータ領域
１０２ｙ    ユーザデータ領域
１０２ｍ    メモリ領域
１０３      ＲＡＭ
１０４      表示部
１０５      操作部
１０６      オーディオ処理部
１０６ｅ    エンコーダ
１０６ｄ    デコーダ
１０７      マイク
１０８      スピーカ
１０９      通信部
１１０      メモリ管理部
１２０      メモリ制御部
７００      論理物理変換テーブル
８０２      アプリケーションプログラム部
８０３      メモリコントローラ
８５３      メモリコントローラ
１０００    プログラム書き込み装置
１００１    ＲＯＭライタ
１００２    ＰＣ
１００３    書き込み済みフラッシュメモリ
１００４    ブランクフラッシュメモリ
１００５    ブランクフラッシュメモリ
【図１】
0005395163.tif 000002
【図２】
0005395163.tif 000003
【図３】
0005395163.tif 000004
【図４】
0005395163.tif 000005
【図５】
0005395163.tif 000006
【図６】
0005395163.tif 000007
【図７】
0005395163.tif 000008
【図８】
0005395163.tif 000009
【図９】
0005395163.tif 000010
【図１０】
0005395163.tif 000011
【図１１】
0005395163.tif 000012