JP5395163B2 - メモリ管理装置及びメモリ領域設定方法 - Google Patents

メモリ管理装置及びメモリ領域設定方法 Download PDF

Info

Publication number
JP5395163B2
JP5395163B2 JP2011503699A JP2011503699A JP5395163B2 JP 5395163 B2 JP5395163 B2 JP 5395163B2 JP 2011503699 A JP2011503699 A JP 2011503699A JP 2011503699 A JP2011503699 A JP 2011503699A JP 5395163 B2 JP5395163 B2 JP 5395163B2
Authority
JP
Japan
Prior art keywords
data
area
memory
program data
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011503699A
Other languages
English (en)
Other versions
JPWO2010103780A1 (ja
Inventor
政明 友田
基一 田中
勝志 濱邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2011503699A priority Critical patent/JP5395163B2/ja
Publication of JPWO2010103780A1 publication Critical patent/JPWO2010103780A1/ja
Application granted granted Critical
Publication of JP5395163B2 publication Critical patent/JP5395163B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、不揮発性メモリを管理するメモリ管理装置、メモリ管理装置を備えたデータ記録装置、及び不揮発性メモリのメモリ領域を設定するメモリ領域設定方法に関する。
近年、デジタルオーディオプレーヤ、ICレコーダ、及びデジタルカメラなどを代表とするデジタル機器や、SDカード及びMMCカードなどを代表とするメモリカード等において、不揮発性メモリであるフラッシュメモリが多用されている。フラッシュメモリは、プロセスの進化などにより、大容量化してきている。特に、データの記憶媒体としては、大容量化に向くNAND型フラッシュメモリが多用される。
NAND型フラッシュメモリは、品種によりサイズ等は異なるが、例えば、4096個の物理的なブロックに分割されている。このブロックは消去の最小単位である。ブロックは、128個のページで構成される。ページは、書き込みおよび読み出しの基本単位である。ページは、2048バイトのユーザデータ領域と64バイトの冗長領域とを含む。
通常、機器に組み込まれているマイコンやパソコン等において、データの読み書きを行うアプリケーションプログラムは、共通の単位としてセクタ(512バイト)単位で記憶媒体のデータを管理することが多い。セクタは、上術した書き込みおよび読み出しの基本単位であるページと異なる場合がある。
このようなフラッシュメモリにおいて、記憶されているデータを更新する際、一旦、元データを読み出して、元データと新たなデータとで構成される更新データが消去済みの未使用領域に書き込まれる(例えば、特許文献1参照)。元データが記憶されていた領域は無効領域になる。上述したように、ブロックが消去の最小単位であるため、たとえ、1バイトのデータを更新するだけであっても、ブロックレベルでの読み出し・書き込み・消去が行われる。
通常、フラッシュメモリの書き込み(以下、消去を含む。)回数には、限界がある。例えば、NAND型フラッシュメモリでは、書き込み回数の限界は10万回程度である。そのため、限界を超えた回数の書き込みが、ある領域に対して行われると、その領域は保証されなくなる。すなわち、破壊されて、読み書きできなくなる可能性がある。また、書き込みだけでなく、読み出しによっても、メモリ疲労は進む。よって、フラッシュメモリを搭載した機器を実現する際は、機器の信頼性を確保するために、通常、特定の物理領域に書き込みが集中しないようにウェアレベリングなどの工夫が施される。
特開2000−222292号公報
同一のフラッシュメモリに、極めて重要なデータ(例えば、その機器を動作させるためのプログラムデータ)とユーザデータが記録される場合、プログラムデータの一部とユーザデータの一部が同一ブロック内に記録されることが起こり得る。そのような場合、ユーザデータの頻繁な書き込み及び消去により、ユーザデータの一部と同一ブロックに記録されたプログラムデータの一部も頻繁に別のブロックに書き換えられてしまう。
しかしながら、上述したようなウェアレベリングを行って、特定領域への書き込みが集中しないようにしたとしても、書き込み/読み出し可能な回数が無限になるわけではない。そのため、ユーザデータの書き換えに伴い、同一ブロック内に格納されているプログラムデータが頻繁に書き換えられると、書き込み(消去を含む)/読み出し回数の限界などにより、プログラムデータが破壊されてしまうおそれがあった。プログラムデータが破壊されると、それ以降、機器が動作しなくなってしまうという重大問題を引き起こしてしまう。
本発明は、書き込みや読み出し回数に限界を有するようなフラッシュメモリなどを用いたメモリ管理において、プログラムデータのような極めて重要なデータの破壊リスクを低減する、メモリ管理装置、データ記録装置、及びメモリ領域設定方法を提供することを目的とする。具体的には、ユーザデータの書き換えに伴い、プログラムデータが書き換えられることを防ぐ、メモリ管理装置、データ記録装置、及びメモリ領域設定方法を提供することを目的とする。
本発明のメモリ管理装置は、メモリを制御するメモリ制御部を備えたメモリ管理装置であって、メモリのデータ領域は第1及び第2の管理領域の単位で管理され、第1の管理領域はデータの読み出し及び書き込み単位であり、第2の管理領域はデータの消去単位であり、第2の管理領域は複数の第1の管理領域を含み、メモリのデータ領域は、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを含み、メモリ制御部は、リードオンリーデータ領域とリードライトデータ領域の境界が、第2の管理領域間の境界と一致するように、メモリのデータ領域を管理し、メモリ制御部は、メモリのサイズが複数種類ある場合には、リードオンリーデータ領域とリードライトデータ領域の境界が、第2の管理領域の複数のサイズ間の最小公倍数となる境界に一致するように、メモリのデータ領域を管理する。
本発明のメモリ領域設定方法は、メモリの領域を設定する方法であって、メモリのデータ領域は第1及び第2の管理領域の単位で管理され、第1の管理領域はデータの読み出し及び書き込み単位であり、第2の管理領域はデータの消去単位であり、第2の管理領域は複数の第1の管理領域を含み、メモリのデータ領域において、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを設定し、リードオンリーデータ領域とリードライトデータ領域の境界が、第2の管理領域間の境界と一致するようにし、メモリのサイズが複数種類ある場合には、リードオンリーデータ領域とリードライトデータ領域の境界が、第2の管理領域の前記複数のサイズ間の最小公倍数となる境界に一致するように、メモリのデータ領域を設定する。
本発明によれば、読み出しのみ行われるプログラムデータのような極めて重要なデータと、書き込み及び読み出しが行われるユーザデータが、同一のフラッシュメモリに格納される機器において、プログラムデータとユーザデータをそれぞれ格納するための物理記憶領域の境界がブロック間の境界と一致するようにメモリを管理することにより、ユーザデータの書き込み及び読み出しに起因するメモリ劣化によるプログラムデータへの影響を極力排除することができる。そのため、プログラムデータが破壊されるリスクを低減することが可能となる。本発明によれば、コストアップなしに簡易な方法で、重要なデータが破壊されるリスクを低減することができる。
本発明の実施形態1のデータ記録装置を示す図 (a)は図1のメモリ管理部の例を示す図、(b)は図1のメモリ管理部の他の例を示す図 フラッシュメモリのメモリ領域を示す図であって、(a)は論理ブロック配置を示す図、(b)は物理ブロック配置を示す図 論理物理変換テーブルを示す図 データの書き換えを示す図であって、(a)は物理ブロック配置を示す図、(b)は書き換え前の物理ブロックの詳細図、(c)は書き換え後の物理ブロックの詳細図 本発明の実施形態1のメモリ領域設定方法を含むプログラムデータの書き込み方法を示すフローチャート NANDフラッシュメモリの一例を示す図であって、(a)は論理ブロック配置を示す図、(b)はLBA2のブロックの詳細図 NANDフラッシュメモリの一例を示す図であって、(a)は論理ブロック配置を示す図、(b)はLBA4のブロックの詳細図 本発明の実施形態2のプログラム書き込み装置を示す図 プログラムデータ及びシステムデータが書き込まれた後のブロック配置を示す図であって、(a)は論理ブロック配置を示す図、(b)は物理ブロック配置を示す図、(c)は再配置後の物理ブロック配置を示す図 本発明の実施形態2のデータの再配置を含むメモリ領域設定方法を示すフローチャート
以下、本発明のメモリ管理装置、データ記録装置、及びメモリ領域設定方法について、図面を参照して説明する。
《実施形態1》
本発明の実施形態1のデータ記録装置は、音データの録音/再生を行うICレコーダである。データ記録装置は、フラッシュメモリのプログラムデータ領域に格納されたプログラムデータを読み出して実行することにより、ICレコーダとしての動作(録音・再生・USB接続等)を行う。本実施形態のデータ記録装置は、フラッシュメモリのメモリ領域を管理するメモリ管理装置としての機能を含む。このメモリ管理装置が、読み出しのみを行うプログラムデータ領域を、書き換えを行うユーザデータ領域とは別のブロックに設ける。すなわち、プログラムデータ領域とユーザデータ領域との境界がブロック間の境界と一致するようにメモリの領域を管理する。これにより、ユーザデータの書き換えに伴ってプログラムデータが書き換えられることを防ぎ、プログラムデータが破壊されるリスクを低減することを可能にする。
<1. データ記録装置の構成>
図1に、実施形態1のデータ記録装置の一例であるICレコーダを示す。データ記録装置100は、データ記録装置100内のメモリを管理するメモリ管理部110、表示部104、操作部105、オーディオ処理部106、マイク107、スピーカ108、及び通信部109を有する。オーディオ処理部106は、エンコーダ106e及びデコーダ106dを含む。
メモリ管理部110は、不揮発性メモリであるフラッシュメモリ102と、フラッシュメモリ102を制御するメモリ制御部120と、を含む。メモリ管理部110は、フラッシュメモリ102の領域を設定するメモリ管理装置と、設定された領域にデータを書き込むデータ記録部としての機能を有する。メモリ制御部120は、制御部101(マイコン)とRAM103により構成される。
フラッシュメモリ102は、本実施形態において、NAND型フラッシュメモリである。フラッシュメモリ102のメモリ領域(データ領域)102mは、プログラムデータを格納するためのプログラムデータ領域102pと、システムデータを格納するためのシステムデータ領域102sと、ユーザデータを格納するためのユーザデータ領域102yと、を含む。ここで、プログラムデータは、破壊されると機器の動作において致命傷に陥るような重要なプログラムやデータなどである。システムデータは、機器が動作するために利用するリジュームデータなどのパラメータ類などである。ユーザデータは、録音データ、音楽ファイルなどである。プログラムデータは書き換えが行われないデータであるのに対して、システムデータ及びユーザデータは書き替えが行われるデータである。よって、プログラムデータ領域102pは、データの読み出しのみを行うリードオンリーデータ領域として管理され、システムデータ領域102sとユーザデータ領域102yは、データの書き込み及び消去を行うリードライトデータ領域として管理される。
<2. データ記録装置の動作>
このような構成のデータ記録装置100の動作概要について、簡単に説明する。データ記録装置100は、音データの録音/再生を行う機器である。データ記録装置100は、フラッシュメモリ102のプログラムデータ領域102pに格納されたプログラムデータの一部又は全てを読み出して、RAM103に展開して、プログラムを実行する。そのプログラムがフラッシュメモリ102を管理(例えば、データを読み出し/書き込み)することにより、データ記録装置100はICレコーダとして動作する。以下、ICレコーダとしての録音・再生・USB接続の基本動作について説明する。
<2.1 録音動作>
ユーザが、操作部105の録音キーを押下すると、マイク107は音データを拾う。オーディオ処理部106のエンコーダ106eは、マイク107で拾われた音データをエンコード(例えば、MP3エンコード)する。制御部101は、フラッシュメモリ102のユーザデータ領域102yにエンコードされたデータを記録していく。一方、ユーザが、操作部105の停止キーを押下すると、オーディオ処理部106のエンコーダ106eは、MP3エンコードを停止する。制御部101は、フラッシュメモリ102へのエンコードデータの記録を停止する。
<2.2 再生動作>
表示部104は、フラッシュメモリ102のユーザデータ領域102yに記録されている音データのリストを表示可能である。ユーザは、表示部104に表示されているリストの中から所望の音データを選択することができる。ユーザが、操作部105に対して音データの選択を行って再生キーを押下すると、制御部101は、所望の音データをフラッシュメモリ102から読み出す。オーディオ処理部106のデコーダ106dは、読み出された音データをデコード(本実施形態では、MP3デコード)し、スピーカ108から音を出力する。なお、スピーカ108の代わりにインナーホンから音を出力する場合も、同様に行う。
<2.3 インタフェース動作>
制御部101は、通信部109を介して、USB(Universal Serial Bus)やSATA(Serial Advanced Technology Attachment)などの通信インタフェースに準拠してPC等からフラッシュメモリ102のユーザデータ領域102yにMP3データ等を書き込むことが可能である。このとき、書き込まれたMP3データ等を再生することも可能である。
<2.4 制御部動作−概要>
次に、制御部101の動作について説明する。本実施形態の制御部101は、内蔵RAM非搭載、且つ、プログラムデータを格納するための内蔵NORフラッシュメモリ非搭載のマイクロコンピュータである。本実施形態の制御部101は、外付けのRAM103と、プログラムデータ領域102pにプログラムデータを格納したフラッシュメモリ102と、に接続されている。データ記録装置100がICレコーダとして動作するとき(すなわち、録音・再生・USB接続などを行うとき)、制御部101は、フラッシュメモリ102のプログラムデータ領域102pに格納されたプログラムデータの一部又は全てを読み出して、RAM103に展開して、プログラムを実行する。実行されたプログラムが、フラッシュメモリ102のメモリ管理(具体的には、データの読み出し/書き込み)を行うことにより、データ記録装置100は、ICレコーダとして動作する。
<2.5 制御部動作−メモリコントローラ>
図2(a)に、本実施形態におけるメモリ管理部110の一例を示す。図2(b)に、メモリ管理部110の他の例(メモリ管理部110’)を示す。図2(a)及び(b)は、図1のメモリ管理部110のメモリ制御部120を別の形式で記載した図である。具体的には、制御部101にRAM103を組み込んだ形式で、別の形式で簡略化して記載した図である。なお、メモリ管理部110は、種々の形態で表すことができるため、図2(a)及び(b)に限定するものではない。
図2(a)において、メモリ管理部110は、メモリ制御部120と、フラッシュメモリ102と、を有する。メモリ制御部120は、アプリケーションプログラム部802とメモリコントローラ803を含む。フラッシュメモリ102は、メモリ領域102mを含む。図2(a)のメモリ管理部110は、メモリコントローラ803が、メモリ制御部120側に搭載されている例を示している。フラッシュメモリ102のメモリ領域102mは、図1に示すプログラムデータ領域102pを含み、プログラムデータ領域102pにアプリケーションプログラムが格納されている。メモリ制御部120は、メモリ領域102mからアプリケーションプログラムを読み出して、アプリケーションプログラム部802により、そのアプリケーションプログラムを実行する。
図2(b)において、メモリ管理部110’は、メモリ制御部120と、フラッシュメモリ102と、を有する。メモリ制御部120は、アプリケーションプログラム部802を含む。フラッシュメモリ102は、メモリコントローラ853とメモリ領域102mとを含む。図2(b)のメモリ管理部110’は、メモリコントローラ853が、フラッシュメモリ102側に搭載されている例を示している。フラッシュメモリ102のメモリ領域102mは、図1に示すプログラムデータ領域102pを含み、プログラムデータ領域102pにアプリケーションプログラムが格納されている。メモリ制御部120は、メモリ領域102mからアプリケーションプログラムを読み出して、アプリケーションプログラム部802により、そのアプリケーションプログラムを実行する。
以下、本実施形態では、図2(a)に示すように、メモリ管理部110がメモリ制御部120側にメモリコントローラ803を搭載している場合について説明する。
<2.6 制御部動作−論理ブロック配置と物理ブロック配置の関係>
図3及び図4を用いて、フラッシュメモリにおける一般的な論理アドレスと物理アドレスの変換について説明する。図3(a)及び(b)に、メモリ領域102mの論理ブロック配置と物理ブロック配置の対応付けの一例を示す。なお、図中、PBAは物理ブロックアドレス(Physical Block Address)を示し、LBAは論理ブロックアドレス(Logical Block Address)を示している。図4に、論理物理変換テーブルの一例を示す。図4の論理物理変換テーブル700は、メモリ領域102mの物理アドレスと論理アドレスの対応付けを行う表の一例である。
図3(a)の論理ブロック配置は、図1におけるメモリ領域102mの論理ブロック配置を示し、図3(b)の物理ブロック配置は、図1におけるメモリ領域102mの物理ブロック配置を示す。図3(a)の論理ブロック配置における、論理ブロック910(LBA0)、論理ブロック911(LBA1)、論理ブロック912(LBA2)、論理ブロック913(LBA3)、論理ブロック914(LBA4)、及び論理ブロック916(LBA6)は、それぞれ、図3(b)の物理ブロック配置における、物理ブロック961(PBA1)、物理ブロック966(PBA6)、物理ブロック963(PBA3)、物理ブロック969(PBA9)、物理ブロック971(PBA11)、及び物理ブロック962(PBA2)に対応している。図2(a)のメモリコントローラ803は、図4の論理物理変換テーブル700を備え、物理ブロックアドレスと論理ブロックアドレスの対応付けを行う。なお、論理物理変換テーブル700は、通常、メモリコントローラ803において、生成及び管理されることが多いが、その生成及び管理手法については、ここで制限するものではない。
図2(a)のアプリケーションプログラム部802は、物理アドレスではなく、論理アドレスに対して、データの読み出し/書き込みのアクセスを行う。メモリコントローラ803は、論理アドレスと物理アドレスの対応付け変換を行い、特定の物理ブロックアドレスへの書き込み(消去を含む。)が集中しないように制御する。例えば、メモリコントローラ803は、ウェアレベリング技法を駆使する。ウェアレベリング技法とは、論理アドレスと物理アドレスの対応付けを適宜変更する手法である(ここでは、その詳細説明は省略する)。これにより、アプリケーションプログラム部802は、特定の物理ブロックアドレスに偏った書き込み(消去を含む。)を行わないような複雑なプログラムを作成する必要がなく、論理的なアドレス(論理ブロック、論理ページ、論理セクタなど)でプログラムを実現することが可能となる。例えば、フラッシュメモリ上に記憶したシステムパラメータなどを度々書き換え更新したとしても、特定の物理ブロックアドレスに対して過度の回数の書き込み(消去を含む。)は行われない。よって、メモリ寿命によるメモリ破壊のリスクが低減される。
<2.7 制御部動作−データ更新>
図5を用いて、一般的なデータの書き換えについて説明する。図5(a)の物理ブロック配置は、図1のメモリ領域102mの物理ブロック配置の一例を示す。図5(b)は、データ書き換え前の物理ブロックアドレス2(PBA2)の物理ブロックを示す。図5(c)は、データ書き換え後の物理ブロックアドレス4094(PBA4094)の物理ブロックを示す。図5(b)及び(c)に示すように、各物理ブロックは128ページにより構成される。ページは、書き込み/読み出しの基本単位であり、ペイロード部(2Kバイト)と冗長部(64バイト)とを含む。
図5(a)において、プログラムデータA、プログラムデータB、及びプログラムデータCが、それぞれ、物理ブロックアドレス0(PBA0)の全ページ、物理ブロックアドレス4(PBA4)の全ページ、及び物理ブロックアドレス2(PBA2)のページ0に格納されている。また、システムデータDが物理ブロックアドレス2(PBA2)のページ64に格納されている。また、物理ブロックアドレス2(PBA2)は、図4の論理物理変換テーブル700において、LBA6に対応付けられている。
この状況において、アプリケーションプログラム部802が、LBA6のページ64に格納されたシステムデータの書き換え(更新)を行うと仮定する。この場合、メモリコントローラ803は、図4に示す論理物理変換テーブル700により、LBA6に対応するPBA2のページ64に格納されたシステムデータDの書き換え(更新)を行う。例えば、メモリコントローラ803は、PBA2のページ0に格納されているプログラムデータCをPBA4094のページ0にプログラムデータEとしてコピーし、PBA2のページ64に格納されているシステムデータDを読み出して必要な箇所を更新して、PBA4094のページ64にシステムデータFとして書き込む。もし、他のページにもデータが存在する場合は、ページ0のようなコピー動作を行うこととなる。これにより、PBA4094が新たなLBA6の格納領域となる。PBA2は消去することにより、未使用ブロックとなる。すなわち、論理物理変換テーブル700において、LBA6に対応する物理アドレスがPBA2からPBA4094に書き換えられる。このように、ブロックデータの一部でもデータの更新を行う場合、物理ブロックを丸ごとコピー(PBA2の読み出し、PBA4094への書き込み、及びPBA2の消去)することになる。
図1に示すフラッシュメモリ102において、読み出しのみを行うプログラムデータのためのプログラムデータ領域102pと、読み出し/書き込みが行われるシステムデータ領域102s及びユーザデータ領域102yが、物理ブロックの境界を意識しない状態で配置されていると、プログラムデータと、システムデータ又はユーザデータが、同一ブロック内に混在して格納されることになる。この場合、システムデータやユーザデータが書き換えられると、全てあるいは一部のプログラムデータが格納されている論理ブロックの物理ブロックアドレスも、頻繁に移動することになる。すなわち、プログラムデータが格納されているブロックのコピー(読み出し及び書き込み)が頻繁に行われることとなってしまう。ICレコーダの場合、録音データが頻繁に書き換えられることが多い。よって、ウェアレベリング手法などで特定の物理ブロックアドレスへの偏った書き込み(消去を含む。)をある程度防いだとしても、ブロックコピー回数が増えると、メモリ劣化が進むため、データ破壊に繋がることが避けられなくなる。さらに、万一、度重なるコピー動作が失敗した場合、プログラムデータを失ってしまうことになる。これは、機器の動作において、非常に大きなリスクを負うことになる。
よって、本実施形態では、以下に詳細を説明するように、制御部101は、システムデータ及びユーザデータを、プログラムデータと同一のブロックには書き込まないようにする。すなわち、プログラムデータ領域102pが、システムデータ領域102s及びユーザデータ領域102yと、別のブロックになるように、メモリ領域102mを管理する。これにより、上記リスクを低減する。
<3.メモリ領域の設定及びプログラムの書き込み方法>
図6〜図8を用いて、メモリ領域の設定及びプログラムデータの書き込み方法(転送方法)について説明する。本実施形態において、プログラムデータは、データ記録装置100であるICレコーダの製造時又は出荷時に書き込まれる。しかし、古いプログラムデータがプログラムデータ領域102pに格納されていて、新しいプログラムデータを書き込む場合、つまり、アップデートの動作の場合も、以下に示す説明を同様に適用できる。
<3.1 フラッシュメモリへの書き込み>
図1のフラッシュメモリ102のメモリ領域102mに、プログラムデータ領域102pを設定し、プログラムデータ領域102pにプログラムデータが格納されていない状態からプログラムデータを書き込む動作について、まず概略を説明する。データ記録装置100用のプログラムデータ(例えば、サイズ=525824バイト)が、データ記録装置100に接続されたパソコン(PC)上にあると、データ記録装置100の制御部101は、通信部109を介して、そのパソコンからプログラムデータをテンポラリユーザデータ領域に取り込む。ここで、テンポラリユーザデータ領域とは、任意の記憶領域であって、制御部101、RAM103、及びフラッシュメモリ102のうち、いずれに存在しても構わない。テンポラリユーザデータ領域は、PCからマスストレージとして見え、PCは、マスストレージの領域に対して、プログラムデータを書き込むことができる。
制御部101は、テンポラリユーザデータ領域に格納したプログラムデータのサイズに基づいて、プログラムデータ領域102pを設定する。制御部101は、テンポラリユーザデータ領域に一旦置いたプログラムデータを、プログラムデータ領域102pに転送し、テンポラリユーザデータ領域に残ったプログラムデータを消去する。この時点で、プログラムデータ領域102pへのプログラムデータの転送が完了し、データ記録装置100は、動作可能な状態になる。
具体的には、制御部101は、プログラムデータ領域102pを設定して、プログラムデータをプログラムデータ領域102pに転送するとき、図6のフローチャートに示す処理を実行する。図6は、本実施形態におけるプログラムデータの書き込み方法のフローチャートの一例を示している。
図7の例を用いて、図6のフローについて説明する。図7は、メモリ領域102mのデータの配置の一例であって、プログラムデータが書き込まれた後の状態を示している。図7(a)は、フラッシュメモリ102のメモリ領域102の論理ブロック配置を示している。図7(a)の論理ブロック配置において、メモリ領域102mは、プログラムデータ領域、システムデータ領域、ユーザデータ領域、及び予備データ領域を含んでいる。プログラムデータ領域には、プログラムデータA、プログラムデータB、及びプログラムデータCが格納されている。システムデータ領域には、システムデータDが格納されている。図7(b)は、フラッシュメモリ102のLBA2(論理ブロックアドレス2)のブロックデータを示している。
図7において、制御部101が扱える共通最小単位であるセクタのサイズは512バイト(PCとの親和性も考慮し512バイトとしている。)、4セクタを1ページとするページのサイズは2Kバイト、128ページを1ブロックとするブロックのサイズは256Kバイト、ブロック数は4096個である。よって、1ブロックは、128×4=512セクタとなる。この例では、書き込むプログラムデータA,B,Cの合計サイズは525824バイトとする。制御部101は、全ブロックにおけるセクタ番号(セクタ0〜セクタ2097151)を、通し番号で管理する。
図6のフローチャートにおいて、制御部101は、まず、フラッシュメモリ102のメモリ領域102mを、プログラムデータ領域102p、システムデータ領域102p、及びユーザデータ領域102yに分けて設定し(S401〜S408)、その後、プログラムデータやシステムデータを設定された各領域に書き込む(S409及びS410)。
<3.1.1 プログラムデータ領域の決定>
プログラムデータの転送開始時点で、制御部101は、まず、プログラムデータサイズ(=525824バイト)を計算する(S401)。次に、フラッシュメモリ102のセクタサイズ(=512バイト)、ページサイズ(=2Kバイト)、ブロックサイズ(=256Kバイト)、及びブロック数(=4096個)を計算する(S402)。制御部101は、ステップS401及びS402の結果から、最低限必要なプログラムデータ領域サイズ(=2ブロック+1536バイト分)を計算する(S403)。
制御部101は、プログラムデータ領域102pの開始セクタと終了セクタとを決定する(S404)。図7(a)の論理ブロック配置においては、制御部101は、プログラムデータ領域102pの開始セクタを「LBA0のページ0の1セクタ目(つまり、セクタ0)」とし、終了セクタを「LBA2の最終ページであるページ127の最終セクタ(つまり、セクタ1535)」として決定する。本実施形態において、制御部101は、プログラムデータ領域102pの終了セクタを、プログラムデータサイズぎりぎりではなく、ブロックの境界終端まで確保する。すなわち、LBA0のページ0〜LBA2のページ0までをプログラムデータ領域102pとするのではなく、LBA0のページ0〜LBA2のページ127までを、プログラムデータ領域102pとして確保する。これにより、LBA2のページ1〜ページ127に、ユーザデータなどの書き換えを行うデータが書き込まれることを防ぐ。
<3.1.2 システムデータ領域の決定>
システムデータサイズが512バイトであるとする。制御部101は、最低限必要なシステムデータ領域サイズ(=1ページ分)を計算する(S405)。制御部101は、システムデータ領域102sの開始セクタと終了セクタを決定する(S406)。図7(a)の論理ブロック配置の場合、制御部101は、システムデータ領域102sの開始セクタを「LBA3のページ0の1セクタ目(つまり、セクタ1536)」とし、終了セクタを「LBA3の最終ページであるページ127の最終セクタ(つまり、セクタ2047)」として決定する。すなわち、制御部101は、プログラムデータ領域102pと同様に、システムデータ領域102sの終了セクタを、システムデータサイズぎりぎりではなく、ブロックの境界終端まで確保する。なお、本実施の形態では、システムデータを含んであるが、必ずしも必要ではない
<3.1.3 ユーザデータ領域の決定>
制御部101は、ユーザデータサイズを1047265280バイトとして、最低限必要なユーザデータ領域サイズ(=3996ブロック分)を計算する(S407)。ここで、ユーザデータサイズとは、ICレコーダとして音データを録音したり、PCからUSB経由でデータを取り込んで記録しておく領域として確保するサイズである。制御部101は、ユーザデータ領域102yの開始セクタと終了セクタとを決定する(S408)。図7(a)の論理ブロック配置の場合、制御部101は、ユーザデータ領域102yの開始セクタを「LBA4の1セクタ目(つまり、セクタ2048)」とし、終了セクタを「LBA3999の最終ページであるページ127の最終セクタ(つまり、セクタ2047999)」として決定する。なお、説明の簡単化のため、最低限必要なユーザデータ領域サイズをブロックサイズの倍数として説明したが、ブロックサイズの倍数でない場合でも、システムデータと同様に、終了セクタをブロックの境界終端まで確保する。
<3.1.4 プログラムデータの書き込み>
以上のように各領域が設定されると、制御部101は、プログラムデータの書き込み動作に移る(S409)。制御部101は、プログラムデータ525824バイトをプログラムデータ領域102pに書き込む。具体的には、プログラムデータを、プログラムデータA(262144バイト)、プログラムデータB(262144バイト)、及びプログラムデータC(1536バイト)にわけて、それぞれ、LBA0、LBA1、LBA2に書き込む。LBA2のページ1以降には、何も書かれない。
<3.1.5 システムデータの書き込み>
次に、制御部101はシステムデータの書き込み動作に移る(S410)。制御部101は、システムデータ512バイトをシステムデータ領域102sに書き込む。具体的には、LBA3に書き込む。LBA3のページ1以降は、何も書かれない。
以上により、プログラムデータの転送が完了する。プログラムデータがプログラムデータ領域102pに転送された後、データ記録装置100は、上述した録音動作、再生動作などを行うことができるようになる。
以上のように各領域を設定することにより、プログラムデータ領域102pは、読み出し/書き込みが行われるシステムデータ領域102s及びユーザデータ領域102yと、同じ物理ブロックに共存することがなくなる。言い換えると、データの読み出しのみを行うプログラムデータ領域102pと、データの書き込み及び消去を行うシステムデータ領域102s及びユーザデータ領域102yとの境界が、物理ブロックの境界と一致する。そのため、例えば、図7において、システムデータの更新(書き換え)を頻繁に行った場合、LBA3に対応する物理ブロックのコピー動作が頻繁に起こるだけとなり、プログラムデータが格納されているLBA0〜LBA2に対応した物理ブロックのコピーは一切発生しない。また、例えば、ユーザデータの更新(書き換え)が頻繁に行われた場合、LBA4〜LBA3999に対応する物理ブロックのコピー動作が頻繁に起こるだけであり、プログラムデータが格納されているLBA0〜LBA2に対応した物理ブロックのコピーは一切発生しない。よって、上述したメモリ破壊のリスクを低減することが可能になる。
なお、フラッシュメモリの種類が1つの場合(すなわち、複数のフラッシュメモリにおいて、1ブロック当たりのセクタ数が同一の場合)は、上述した方法により、各領域を設定すれば良い。一方、フラッシュメモリの種類が複数ある場合(すなわち、複数のフラッシュメモリにおいて、1ブロック当たりのセクタ数が異なる場合)は、以下に示すように、複数のフラッシュメモリにおいて各領域がセクタ番号レベルで共通になるように設定すると良い。これにより、記憶容量の異なるICレコーダを実現する際にプログラムを共通にすることができる。
<3.2 異なる種類が存在する場合のフラッシュメモリへの書き込み>
図8に、図7と異なるメモリ領域102mの配置を示す。図8において、制御部101が扱える共通最小単位であるセクタのサイズは512バイト(PCとの親和性も考慮し512バイトとする)、4セクタを1ページとするページのサイズは2Kバイト、64ページを1ブロックとするブロックのサイズは128Kバイト、ブロック数は8192個である。1ブロックは、64×4=256セクタとなる。図8の場合、プログラムデータのサイズは525824バイトである。制御部101は、全ブロックにおけるセクタ番号(セクタ0〜セクタ2097151)を通し番号で管理する。
図8は、図7と異なるメモリ領域102mのデータの配置の一例であって、図6に示すフローに従って各領域が設定され、プログラムデータ及びシステムデータが書き込まれた後の状態を示している。図8(a)は、フラッシュメモリ102のメモリ領域102の論理ブロック配置を示している。図8(a)の論理ブロック配置において、メモリ領域102mは、プログラムデータ領域、システムデータ領域、ユーザデータ領域、及び予備データ領域を含む。プログラムデータ領域には、プログラムデータA、プログラムデータB、プログラムデータC、プログラムデータD、及びプログラムデータEが書き込まれている。システムデータ領域には、システムデータFが書き込まれている。図8(b)は、フラッシュメモリ102のLBA4(論理ブロックアドレス4)のブロックデータを示している。
<3.2.1 複数のフラッシュメモリに対応するためのブロック境界の共通化>
図7と図8の1ブロックあたりのセクタ数を比較すると、図7の物理ブロック配置では、1ブロックあたり256セクタである。一方、図8の物理ブロック配置では、1ブロックあたり512セクタである。制御部101は、プログラムデータ転送及びICレコーダとしての機器動作において、セクタ単位でフラッシュメモリ102にアクセスする。そのため、複数種類のいずれかのフラッシュメモリを搭載した記憶容量の異なるICレコーダを実現する際、プログラムの共通化のために、プログラムデータ領域102p、システムデータ領域102s、及びユーザデータ領域102yを、セクタ番号レベルで共通化することが得策である。よって、例えば、図7と図8の2種類のフラッシュメモリがある場合、この2種類のフラッシュメモリのそれぞれのブロックサイズの最小公倍数である512セクタ分(すなわち、図8における2ブロック分)を共通ブロックと定義し、制御部101は、共通ブロック(2ブロック分)の単位で領域を決定する。
<3.2.2 プログラムデータ領域の決定>
図6のフローチャートを参照して、図8におけるメモリ領域の決定及びプログラム書き込み方法を説明する。制御部101は、プログラムデータの転送開始時点で、まず、プログラムデータサイズ(=525824バイト)を計算する(S401)。次に、フラッシュメモリ102のセクタサイズ(=512バイト)、ページサイズ(=2Kバイト)、ブロックサイズ(=128Kバイト)、及びブロック数(=8192個)を計算する(S402)。制御部101は、ステップS401及びS402の結果から、最低限必要なプログラムデータ領域サイズ(=4ブロック+1536バイト分)を計算する(S403)。
制御部101は、プログラムデータ領域102pの開始セクタと終了セクタとを決定する(S404)。図8(a)に示す論理ブロック配置においては、制御部101は、プログラムデータ領域102pの開始セクタを「LBA0のページ0の1セクタ目(つまり、セクタ0)」とし、終了セクタを「LBA5の最終ページであるページ63の最終セクタ(つまり、セクタ1535)」として決定する。ここで、制御部101は、プログラムデータ領域102pの終了セクタを、プログラムデータサイズぎりぎりではなく、且つ、ブロック境界終端ではなく、共通ブロックの境界終端まで確保する。すなわち、LBA4の最終ページであるページ63の最終セクタ(つまり、セクタ1279)ではなく、共通ブロックを配慮して、LBA5の最終ページであるページ63の最終セクタ(セクタ1535)まで確保する。これにより、LBA4のページ1〜LBA5の最終ページに、ユーザデータなどの書き換えを行うデータが書き込まれることを防ぐ。
<3.2.3 システムデータ領域の決定>
システムデータサイズが512バイトであるとする。制御部101は、最低限必要なシステムデータ領域サイズ(=1ページ分)を計算する(S405)。制御部101は、システムデータ領域102sの開始セクタと終了セクタを決定する(S406)。図8(a)の論理ブロック配置の場合、制御部101は、システムデータ領域102sの開始セクタを「LBA6のページ0の1セクタ目(つまり、セクタ1536)」とし、終了セクタを「LBA7の最終ページであるページ127の最終セクタ(つまり、セクタ2047)」として決定する(S406)。すなわち、制御部101は、プログラムデータ領域102pと同様に、システムデータ領域102sの終了セクタを、システムデータサイズぎりぎりではなく、且つ、ブロック境界終端ではなく、共通ブロックの境界終端まで確保する。具体的には、LBA6の最終ページであるページ127の最終セクタ(つまり、セクタ1791)ではなく、共通ブロックを配慮し、LBA7の最終ページであるページ127の最終セクタ(つまり、セクタ2047)まで確保する。
<3.2.4 ユーザデータ領域の決定>
次に、ユーザデータサイズを1047265280バイトとして、最低限必要なユーザデータ領域サイズ(=7992ブロック分)を計算する(S407)。制御部101は、ユーザデータ領域102yの開始セクタと終了セクタとを決定する(S408)。図8の論理ブロック配置の場合、制御部101は、ユーザデータ領域202yの開始セクタを「LBA8の1セクタ目(つまり、セクタ2048)」とし、終了セクタを「LBA7999の最終ページであるページ127の最終セクタ(つまり、セクタ2047999)」として決定する。なお、説明の簡単化のため、最低限必要なユーザデータ領域サイズを共通ブロックサイズの倍数として説明したが、共通ブロックサイズの倍数でない場合でも、システムデータと同様に、終了セクタを共通ブロックの境界終端まで確保する。
<3.2.5 プログラムデータの書き込み>
以上のように各領域が設定されると、制御部101は、プログラムデータの書き込み動作に移る(S409)。制御部101は、プログラムデータ525824バイトをプログラムデータ領域102pに書き込む。具体的には、プログラムデータを、プログラムデータA(131072バイト)、プログラムデータB(131072バイト)、プログラムデータC(131072バイト)、プログラムデータD(131072バイト)、及びプログラムデータE(1536バイト)にわけて、それぞれ、LBA0、LBA1、LBA2、LBA3、LBA4に書き込む。LBA4のページ1以降及びLBA5には、何も書かれない。
<3.2.6 システムデータの書き込み>
次に、制御部101はシステムデータの書き込み動作に移る(S410)。制御部101は、システムデータ512バイトをシステムデータ領域102sに書き込む。具体的には、LBA6に書き込む。LBA6のページ1以降及びLBA7には、何も書かれない。
以上により、プログラムデータ及びシステムデータの転送が完了する。プログラムデータがプログラムデータ領域102pに転送された後、データ記録装置100は、上述した録音動作及び再生動作などを行うことができるようになる。
以上のように、異なるフラッシュメモリ(1ブロック当たりのセクタ数が異なる。)を搭載した2種類以上の機器において、プログラムデータとユーザデータの物理記憶位置を共通ブロック単位で区別して管理することにより、プログラムデータの破壊リスクを低減するとともに、アプリケーションプログラムの共用化(開発効率アップ)を図ることが可能となる。具体的には、上記のように各領域を設定することにより、フラッシュメモリの種類が異なるデータ記録装置100を構成する場合でも、各領域を区切るセクタアドレスを共通化でき、データの読み書きを共通したセクタアドレスで管理できる。よって、プログラムの共通化が可能となり、開発効率を高めることが可能となる。
また、プログラムデータ領域102pと、読み出し/書き込みが行われるシステムデータ領域102s及びユーザデータ領域102yが、同じ物理ブロックに共存することがなくなる。言い換えると、データの読み出しのみを行うプログラムデータ領域102pと、データの書き込み及び消去を行うシステムデータ領域102s及びユーザデータ領域102yとの境界が、物理ブロック間の境界と一致する。そのため、例えば、図8において、システムデータの更新(書き換え)が頻繁に行われたとしても、LBA6に対応する物理ブロックのコピー動作が頻繁に起こるだけとなる。また、例えば、ユーザデータの更新(書き換え)が頻繁に行われたとしても、LBA8〜LBA7999に対応する物理ブロックのコピー動作が頻繁に起こるだけである。よって、プログラムデータが格納されているLBA0、LBA1、LBA2、LBA3、LBA4に対応した物理ブロックのコピーは一切発生しない。これにより、メモリ破壊のリスクを低減することが可能となる。
本実施形態によれば、プログラムデータの破壊を防ぐことができるため、1つのメモリでプログラムデータとユーザデータとを格納することができる。例えば、従来のICレコーダ等のデータ記録装置は、プログラムデータの破壊を防ぐために、プログラムデータを格納するためのメモリ(例えば、NOR型フラッシュメモリ)と、録音データ等のユーザデータを格納するためのメモリ(例えば、NAND型フラッシュメモリ)とをそれぞれ備えていた。しかし、本実施形態によれば、1つのメモリにプログラムデータとユーザデータとを格納しても、プログラムデータの破壊を防ぐことができるため、メモリを1つにすることができる。例えば、プログラム用の専用のメモリを設ける必要がなくなる。よって、データ記録装置100のコストを削減することができる。
なお、本実施形態では、データ記録装置100として、不揮発性記憶媒体であるフラシュメモリ102に対してオーディオデータの読み書きを行うICレコーダを例にして説明したが、データ記録装置100の種類は本実施形態に限定されない。データ記録装置100は、不揮発性記憶媒体に対して、ユーザデータの読み書きを行う機器であればよい。例えば、データ記録装置100は、デジタルカメラや携帯端末であってもよい。
また、本実施形態では、データ記録装置100の一部(具体的には、メモリ管理部110)がメモリ管理装置である場合を例にして説明したが、メモリ管理装置は、データ記録装置100の機能の一部として、データ記録装置100内に設けられていなくてもよい。例えば、メモリ管理装置は、データ記録装置100とは別の装置の内部に設けられてもいいし、メモリ管理装置自体が1つの装置として機能するようなものであってもよい。例えば、メモリ管理装置は、プログラムデータ領域を設定する装置やプログラムデータが書き込まれたフラッシュメモリを生産するプログラム書き込み装置の機能の一部又は全部であってもよい。
本実施形態では、フラッシュメモリ102がNAND型フラッシュメモリである場合について説明したが、フラッシュメモリ102の種類は本実施形態に限定されない。例えば、本実施形態のフラッシュメモリ102の代わりに、NOR型フラッシュメモリ及びEEPROMなど、他のあらゆる不揮発性記憶媒体を使用してもよい。
本実施形態では、マイコンとして制御部101を使用し、外付けRAMとしてRAM103を設ける構成を例にして説明したが、RAM103は制御部101に内蔵されていてもよい。
本実施形態では、フラッシュメモリ102に、プログラムデータ、システムデータ、及びユーザデータが格納されるものとして説明したが、フラッシュメモリ102に格納されるデータの種類は、本実施形態に限定されない。プログラムデータと、読み書きを行うその他のデータ(例えば、ユーザデータ)が、同一のフラッシュメモリに格納される場合に、本実施形態を適用することができる。
本実施形態においては、プログラムデータの書き込み(S409)の直前に、領域を設定する例で説明したが、領域の設定はプログラムデータの書き込み(転送処理)とは別のタイミングで行ってもよい。例えば、S409の前処理(S401、S402、S403、S405、S407を含む。)は、必ずしも転送処理中に行う必要はなく、あらかじめ計算しておいてもよい。
《実施形態2》
本実施形態のメモリ管理装置は、工場等に設けられて、プログラムデータが書き込まれたフラッシュメモリを大量に生産する装置(プログラム書き込み装置)である。本実施形態のプログラム書き込み装置は、プログラムデータの書き込み先の物理ブロックを再配置し、再配置済みのフラッシュメモリをマスタとして、そのフラッシュメモリをコピーすることにより、短時間での大量のコピー(すなわち、書き込み済みフラッシュメモリの生産)を可能にする。
<1.メモリ管理装置の構成>
図9に、本実施形態におけるメモリ管理装置の一例であるプログラム書き込み装置を示す。プログラム書き込み装置1000は、ROMライタ1001と、パーソナルコンピュータ(PC)1002と、を含む。ROMライタ1001は、PC1002に接続されている。ROMライタ1001は、PC1002に保存されているデータを、ブランクフラッシュメモリ1004、1005等に書き込むことができる。また、ROMライタ1001は、書き込み済みフラッシュメモリ1003に記録されているデータを、書き込み済みフラッシュメモリ1003から読み出して、PC1002に保存することができる。PC1002は、ROMライタ1001からデータを読み出し、読み出したデータを加工し、加工したデータをブランクフラッシュメモリ1004、1005に書き込むことが可能である。本実施形態において、書き込み済みフラッシュメモリ1003及びブランクフラッシュメモリ1004、1005は、NAND型フラッシュメモリである。
<2.メモリ管理装置の動作>
プログラム書き込み装置(メモリ管理装置)1000の動作について、図10及び図11を用いて説明する。図10(a)及び(b)は、書き込み済みフラッシュメモリ1003にプログラムデータ及びシステムデータが書き込まれている状態を示している。図10(a)は論理ブロックにおける配置を示し、図10(b)は物理ブロックにおける配置を示している。図10(a)の論理ブロック配置において、プログラムデータ領域には、プログラムデータA、プログラムデータB、プログラムデータC、プログラムデータD、及びプログラムデータEが書き込まれている。システムデータ領域には、システムデータFが書き込まれている。図10(b)の物理ブロック配置は、図10(a)の論理ブロック配置の各ブロックを物理配置に並べ替えたものであり、論理ブロック配置に含まれていたプログラムデータやシステムデータを含む。図10(c)は、本実施形態において、PC1002上で、図10(b)の物理ブロック配置に含まれていたプログラムデータやシステムデータを再配置した後の物理ブロック配置を示している。
プログラムデータ及びシステムデータが、例えば、実施形態1のメモリ管理装置(データ記録装置100のメモリ管理部110)により、フラッシュメモリに書き込まれると、図10(a)及び図10(b)に示す書き込み済みフラッシュメモリ1003の状態になる。具体的には、図10(a)の論理ブロック配置に示すように、プログラムデータAはLBA0、プログラムデータBはLBA1、プログラムデータCはLBA2、プログラムデータDはLBA3、プログラムデータEはLBA4に格納され、システムデータFはLBA6に格納された状態になる。
<3.従来手法の動作>
まず、従来の一般的なフラッシュメモリのプログラムデータ及びシステムデータのコピーについて説明する。プログラムデータが書き込まれた書き込み済みフラッシュメモリ1003がROMライタ1001に装着されると、従来のメモリ管理装置は、書き込み済みフラッシュメモリ1003からプログラムデータ及びシステムデータを読み出す。ROMライタ1001は、フラッシュメモリに対して、論理アドレスでアクセスを行うのではなく、物理アドレスでアクセスを行う。よって、例えば、プログラムデータ及びシステムデータが格納される可能性のある場所がPBA0〜PBA13と決まっている場合は、その14ブロック分のデータを読み出す。
次に、プログラムデータ及びシステムデータが書き込まれていないブランクフラッシュメモリ1004がROMライタ1001に装着されると、ROMライタ1001は、物理ブロック配置の14ブロック分のデータを、ブランクフラッシュメモリ1004に書き込む。この時の書き込みに要する時間は、14ブロック分のデータを書き込む(及びベリファイ等を含む。)時間となる。これにより、ブランクフラッシュメモリ1004は、プログラムデータ等が書き込まれた状態になる。その後、さらにコピーを繰り返す場合は、別のブランクフラッシュメモリ1005がROMライタ1001に装着される。ROMライタ1001は、物理ブロック配置の14ブロック分のデータを、ブランクフラッシュメモリ1005に書き込む。この動作を繰り返すことにより、メモリ管理装置は、プログラムデータが書き込まれたフラッシュメモリを複数個生産する。
アプリケーションプログラムは論理アドレスしか認識できないため、実施形態1のデータ記録装置100等により論理ブロック配置において連続した領域にプログラムデータが書き込まれても、実際には図10(b)の物理ブロック配置に示すように離れた位置に書き込まれることになる。ROMライタ1001は、フラッシュメモリに対して、物理アドレスでしかアクセスすることができない。ROMライタ1001は、プログラムデータが物理ブロックのどこに配置されているかがわからないため、例えば、図10(b)に示す、PBA1,3,6,9,11のみを読み出すことができない。そのため、例えば、フラッシュメモリの全領域、つまり、物理ブロックの先頭ブロック(PBA0)から物理ブロックの最終ブロックまでのように、プログラムが格納される可能性のある物理ブロックを全て読み出して、読み出した全ての物理ブロック(空きブロックを含む。)をブランクフラッシュメモリに書き込むことになる。よって、従来のメモリ管理装置は、短時間で、書き込み済みフラッシュメモリを大量に生産することができない。そこで、本実施形態では、以下に示すように、マスタとなる書き込み済みフラッシュメモリの物理ブロックの配置を再配置する。
<4.本実施形態における手法>
<4.1 プログラムデータ・システムデータの読み出し>
図11に、実施形態2における、メモリ領域設定(具体的には、プログラムデータの再配置)を含むプログラム格納方法のフローチャートを示す。実施形態1のデータ記録装置100等により、プログラムデータ及びシステムデータが既に格納された書き込み済みフラッシュメモリ1003がROMライタ1001に装着されると、ROMライタ1001は、書き込み済みフラッシュメモリ1003からプログラムデータ及びシステムデータを読み出す(S1101)。
プログラムデータは、図10(a)の論理ブロック配置のように、書き込み済みフラッシュメモリ1003の連続した領域LBA0〜LBA4に格納されている。しかし、実際は、図10(b)の物理ブロック配置のように、バラバラに配置されている(図4の論理物理変換テーブル700参照)。ROMライタ1001は、フラッシュメモリに対して、物理アドレスでアクセスを行うものであるため、PBA1,3,6,9,11のみを読み出すことができない。すべてのプログラムデータ及びシステムデータを読み出すのに、予めデータが格納されている物理ブロックアドレスがわかっている場合は、ROMライタ1001は、その最終の物理ブロック(PBA)までのブロックデータを読み出せばよい。一方、予めデータが格納されている物理ブロックアドレスがわからない場合は、かなり余裕を持った個数のブロックを読み出して中身を確認するか、又は、全領域のブロックを読み出す必要がある。図10(b)の例においては、予めプログラムデータ及びシステムデータが、PBA0〜PBA13のどこかに格納されていることがわかっていることを前提とする。本実施形態において、ROMライタ1001は、PBA0〜PBA13までの14ブロック分のデータを読み出す。
図10(b)の物理ブロック配置に示すように、プログラムデータAはPBA1、プログラムデータBはPBA6、プログラムデータCはPBA3、プログラムデータDはPBA9、プログラムデータEはPBA11に配置されている。また、システムデータFはPBA2に配置されている。ROMライタ1001は、読み出した14ブロック分のデータをPC1002に送信する。これにより、読み出されたデータが、PC1002に取り込まれる。
<4.2 プログラムデータ・システムデータの再配置>
本実施形態において、プログラム書き込み装置1000は、PC1002上で、プログラムデータとシステムデータが書き込まれた物理ブロックの再配置を行う(S1102)。すなわち、図10(b)の物理ブロック配置を図10(c)の物理ブロック配置のように並べ替える。具体的には、PC1002は、物理ブロック配置を仮想作成する。次に、物理ブロック配置をPBA0からサーチしていき、最初に見つかったプログラムデータAが含まれる物理ブロックPBA1を、物理ブロック配置のPBA0に配置する。ここで、データが格納されている物理ブロックには、空きブロックに対して、識別可能となるような仕組みを含んでおく。PC1002は、次に見つかったシステムデータFが含まれる物理ブロックPBA2を、物理ブロック配置のPBA1に配置する。その後、順に、プログラムデータCが含まれる物理ブロックPBA3を物理ブロック配置のPBA2に配置し、プログラムデータBが含まれる物理ブロックPBA6を物理ブロック配置のPBA3に配置し、プログラムデータDが含まれる物理ブロックPBA9を物理ブロック配置のPBA4に配置し、プログラムデータEが含まれる物理ブロックPBA11を、物理ブロック配置のPBA5に配置する。これにより、物理ブロック配置(6ブロック分)が完成する。PC1002は、完成した6ブロック分の物理ブロック配置をROMライタ1001に装着された別のブランクフラッシュメモリに書き込む。論理物理変換テーブル700により、再配置された後の物理アドレスを論理アドレスに対応させる。これにより、プログラムデータ領域102p及びシステムデータ領域102sは、PBA0〜PBA5に設定されることになる。なお、分割されたプログラムデータの順序が予めわかっている場合は、その順序で再配置をおこなってもよい。このフラッシュメモリがマスターフラッシュROMとなる。
<4.3 プログラムデータ・システムデータの書き込み>
プログラムデータ及びシステムデータが書き込まれていないブランクフラッシュメモリ1004がROMライタ1001に装着されると、ROMライタ1001は、プログラムデータ領域102p及びシステムデータ領域102sである物理ブロック配置の6ブロック分のデータを、ブランクフラッシュメモリ1004に書き込む(S1103)。ステップS1102により、プログラムデータ及びシステムデータが書き込まれている物理ブロックを再配置しているため、書き込みに要する時間は、6ブロック分のデータを書き込む(及びベリファイ等)時間となる。これは、従来の手法による8000ブロック以上分の書き込みに要する時間よりも短い。別のブランクフラッシュメモリ1005がROMライタ1001に装着され、プログラムデータ及びシステムデータが書き込まれたフラッシュメモリをさらに生成する場合は(S1104でNo)、ROMライタ1001は物理ブロック配置の6ブロック分のデータを別のブランクフラッシュメモリ1005に書き込む(S1103)。これを繰り返すことにより、プログラムデータ及びシステムデータが書き込まれたフラッシュメモリが大量に生産される。データのコピーを終了する場合(S1104でYes)、ROMライタ1001はデータのコピーを終了する。
本実施形態のプログラム書き込み装置1000により、プログラムデータが書き込まれたフラッシュメモリ(すなわち、プログラムデータ領域及びシステムデータ領域がPBA0〜PBA5に設定されたフラッシュメモリ)は、例えば、ICレコーダ等のデータ記録装置に組み込まれる。
なお、図10(c)の例では、システムデータFがプログラムデータAとプログラムデータCとの間に配置されているが、プログラムデータとシステムデータを分けて配置することがより好ましい。例えば、システムデータFは、プログラムデータEの次のブロックに配置すると良い。これにより、プログラムデータ領域が連続した物理ブロックで構成される。
上記のように、物理的に分散した物理ブロックに配置されたプログラムデータを、物理的に連続した物理ブロックに再配置して、フラッシュメモリに格納することにより、実施形態1で説明したようなメモリ破壊のリスクを低減する効果を維持したまま、プログラムデータを格納したフラッシュメモリをROMライタ等で大量に生産する際におけるROMライタでの書き込み時間の削減を図ることが可能となる。すなわち、プログラムデータの書き込み先を再配置することにより、物理ブロック配置において読み出すべきプログラムデータ領域を小さくできる。よって、ROMライタ等で書き込むべきデータのサイズを削減でき、書き込み時間を短縮できる。
本実施形態においては、プログラムデータと共にシステムデータが、ROMライタ1001により、書き込み済みフラッシュメモリからブランクフラッシュメモリに書き込まれる場合を例にして説明したが、システムデータは必ずしもブランクフラッシュメモリに書き込む必要はない。少なくともプログラムデータを書き込むものであればよい。この場合、プログラムデータの再配置により、プログラムデータ領域が連続した物理ブロックに設定される。
なお、本実施形態では、メモリ管理装置として、ROMライタ1001及びPC1002を含むプログラム書き込み装置1000を例にして説明したが、メモリ管理装置の構成は本実施形態に限定されない。フラッシュメモリ1003の物理ブロック(物理セクタや物理ページなどの物理アドレスであれば同様)に対してデータの読み出し/再配置/書き込みができる機器であれば、本実施形態と同様の構成とみなすことができるため、それらを排除しない。
本実施形態では、フラッシュメモリ1003,1004,1005がNAND型フラッシュメモリである場合について説明したが、フラッシュメモリ1003,1004,1005の種類は本実施形態に限定されない。例えば、本実施形態のフラッシュメモリ1003,1004,1005の代わりに、NOR型フラッシュメモリ及びEEPROMなど、他のあらゆる不揮発性記憶媒体を使用してもよい。
本実施形態では、フラッシュメモリに、プログラムデータ、システムデータ、及びユーザデータが格納されるような場合を例にして説明したが、フラッシュメモリに格納されるデータの種類は、本実施形態に限定されない。プログラムデータと、読み書きを行うその他のデータ(例えば、ユーザデータ)が、同一のフラッシュメモリに格納される場合に、本実施形態を適用することができる。また、本実施形態では、プログラムデータとシステムデータを書き込むものとして説明したが、書き込むデータの種別や個数はこれらに限定するものではない。様々な組み合わせであっても、本実施形態と同様の構成とみなすことができるため、それらを排除しない。
本発明は、読み出しのみ行われるプログラムデータのような極めて重要なデータの破壊のリスクを低減することができるという効果を有し、フラッシュメモリを搭載したICレコーダ及び半導体音楽プレーヤなどに有用である。
100 データ記録装置
101 制御部
102 フラッシュメモリ
102p プログラムデータ領域
102s システムデータ領域
102y ユーザデータ領域
102m メモリ領域
103 RAM
104 表示部
105 操作部
106 オーディオ処理部
106e エンコーダ
106d デコーダ
107 マイク
108 スピーカ
109 通信部
110 メモリ管理部
120 メモリ制御部
700 論理物理変換テーブル
802 アプリケーションプログラム部
803 メモリコントローラ
853 メモリコントローラ
1000 プログラム書き込み装置
1001 ROMライタ
1002 PC
1003 書き込み済みフラッシュメモリ
1004 ブランクフラッシュメモリ
1005 ブランクフラッシュメモリ

Claims (2)

  1. メモリを制御するメモリ制御部を備えたメモリ管理装置であって、
    前記メモリのデータ領域は第1及び第2の管理領域の単位で管理され、前記第1の管理領域はデータの読み出し及び書き込み単位であり、前記第2の管理領域はデータの消去単位であり、前記第2の管理領域は複数の第1の管理領域を含み、
    前記メモリのデータ領域は、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを含み、
    前記メモリ制御部は、前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第2の管理領域間の境界と一致するように、前記メモリのデータ領域を管理し、
    前記メモリ制御部は、前記メモリのサイズが複数種類ある場合には、前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第2の管理領域の前記複数のサイズ間の最小公倍数となる境界に一致するように、前記メモリのデータ領域を管理する、
    メモリ管理装置。
  2. メモリの領域を設定する方法であって、
    前記メモリのデータ領域は第1及び第2の管理領域の単位で管理され、前記第1の管理領域はデータの読み出し及び書き込み単位であり、前記第2の管理領域はデータの消去単位であり、前記第2の管理領域は複数の第1の管理領域を含み、
    前記メモリのデータ領域において、データの読み出しのみを行うリードオンリーデータ領域と、データの書き込み、消去を行うリードライトデータ領域とを設定し、
    前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第2の管理領域間の境界と一致するようにし、
    前記メモリのサイズが複数種類ある場合には、前記リードオンリーデータ領域と前記リードライトデータ領域の境界が、前記第2の管理領域の前記複数のサイズ間の最小公倍数となる境界に一致するように、前記メモリのデータ領域を設定する、
    メモリ領域設定方法。
JP2011503699A 2009-03-12 2010-03-08 メモリ管理装置及びメモリ領域設定方法 Expired - Fee Related JP5395163B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011503699A JP5395163B2 (ja) 2009-03-12 2010-03-08 メモリ管理装置及びメモリ領域設定方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009059072 2009-03-12
JP2009059072 2009-03-12
JP2011503699A JP5395163B2 (ja) 2009-03-12 2010-03-08 メモリ管理装置及びメモリ領域設定方法
PCT/JP2010/001593 WO2010103780A1 (ja) 2009-03-12 2010-03-08 メモリ管理装置、データ記録装置、及びメモリ領域設定方法

Publications (2)

Publication Number Publication Date
JPWO2010103780A1 JPWO2010103780A1 (ja) 2012-09-13
JP5395163B2 true JP5395163B2 (ja) 2014-01-22

Family

ID=42728076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011503699A Expired - Fee Related JP5395163B2 (ja) 2009-03-12 2010-03-08 メモリ管理装置及びメモリ領域設定方法

Country Status (2)

Country Link
JP (1) JP5395163B2 (ja)
WO (1) WO2010103780A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996282B2 (en) 2015-07-27 2018-06-12 Samsung Electronics Co., Ltd. Method of operating data storage device and method of operating system including the same
JP7116260B2 (ja) 2019-07-11 2022-08-09 Primetals Technologies Japan株式会社 圧延装置の運転方法並びに圧延装置の制御装置及び圧延設備

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5429891B2 (ja) * 2011-05-09 2014-02-26 Necアクセステクニカ株式会社 データ書き込み装置およびデータ書き込み方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (ja) * 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
JP2007219793A (ja) * 2006-02-16 2007-08-30 Matsushita Electric Ind Co Ltd フラッシュメモリの書き込み方法
JP2007220101A (ja) * 2006-02-17 2007-08-30 Samsung Electronics Co Ltd ブロック方式のメモリにおいてデータの変更類型に応じてブロックを管理する方法および装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773098A (ja) * 1993-09-01 1995-03-17 Toshiba Emi Ltd データ書き込み方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (ja) * 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
JP2007219793A (ja) * 2006-02-16 2007-08-30 Matsushita Electric Ind Co Ltd フラッシュメモリの書き込み方法
JP2007220101A (ja) * 2006-02-17 2007-08-30 Samsung Electronics Co Ltd ブロック方式のメモリにおいてデータの変更類型に応じてブロックを管理する方法および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996282B2 (en) 2015-07-27 2018-06-12 Samsung Electronics Co., Ltd. Method of operating data storage device and method of operating system including the same
JP7116260B2 (ja) 2019-07-11 2022-08-09 Primetals Technologies Japan株式会社 圧延装置の運転方法並びに圧延装置の制御装置及び圧延設備

Also Published As

Publication number Publication date
JPWO2010103780A1 (ja) 2012-09-13
WO2010103780A1 (ja) 2010-09-16

Similar Documents

Publication Publication Date Title
JP5295778B2 (ja) フラッシュメモリ管理方法
US8291155B2 (en) Data access method, memory controller and memory storage system
US8312554B2 (en) Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus
US6388908B1 (en) Recording system, data recording device, memory device, and data recording method
US7752412B2 (en) Methods of managing file allocation table information
WO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
US20080082773A1 (en) Systems for Managing File Allocation Table Information
KR20110107857A (ko) 솔리드 스테이트 메모리 포멧팅
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JPWO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP4253272B2 (ja) メモリカード、半導体装置、及び半導体メモリの制御方法
JP2007280108A (ja) 記憶媒体制御装置、記憶媒体制御方法、プログラム
TW201344434A (zh) 記憶體格式化方法、記憶體控制器及記憶體儲存裝置
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
JP5395163B2 (ja) メモリ管理装置及びメモリ領域設定方法
JPWO2007105688A1 (ja) メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2005078378A (ja) データ記憶装置及び不揮発性メモリに対するデータ書き込み方法
JP2006252137A (ja) 不揮発性記憶装置の最適化方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4818453B1 (ja) 電子機器およびデータ読み出し方法
JP2008299455A (ja) データ記憶装置及びデータ管理方法
JP2008251063A (ja) 記憶装置
JP4218406B2 (ja) 情報記録再生方法
JP5707695B2 (ja) フラッシュディスク装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130808

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131017

R150 Certificate of patent or registration of utility model

Ref document number: 5395163

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees