(57)【要約】【課題】書込み単位よりも大きい所定の記憶単位毎にメモリを管理し、書込み動作を制御可能なメモリ管理装置およびメモリ管理手法を提供する。【解決手段】メモリ５０の所定のセグメント毎に対して、セグメント内のすべてのアドレスに書込みが行われたか否かを示す全書込みフラグ（ＡＷ＿Ｆ）と、セグメントのアドレスに消去が発生したか否かを示す消去フラグ（ＥＲ＿Ｆ）の２つの管理フラグを用意する。ＣＰＵ１０からの書込み命令・消去命令に応じて、セグメント制御部２０は、実際のデータの書込み・消去をメモリ制御部３０に指示するとともに、これらの管理フラグを逐次更新する。メモリ５０上の書込み可能な最終アドレスまで書込みがなされると、管理フラグに所定の処理を行い、空き領域のあるセグメントのみを次回の書込み対象セグメントとする。【選択図】図１
2005135007.tif 000002
【特許請求の範囲】
【請求項１】
データの書込み単位より大きい所定のメモリ領域毎に、メモリを管理するメモリ管理装置であって、
前記メモリ領域毎に設定され、対応するメモリ領域にデータがすべて書き込まれたか否か（全書込み有／無）を管理する第１の管理手段と、
前記メモリ領域毎に設定され、対応するメモリ領域の少なくとも一部のデータが消去されたか否か（消去有／無）を管理する第２の管理手段と、
データの書込み及び消去指示に応じて、前記第１の管理手段および前記第２の管理手段を制御し、対応する第１の管理手段が全書込み無を示し、かつ、対応する第２の管理手段が消去無を示すメモリ領域を、書込み可能なメモリ領域として特定する制御手段と、
データを書き込む際に、前記制御手段により特定された書込み可能なメモリ領域に対してデータの書込みを行うデータ書込み手段と
を有するメモリ管理装置。
【請求項２】
前記データ書込み手段のデータの書込み対象アドレスが含まれる第Ｎ番目のメモリ領域内であって、前記書込み対象アドレスより上位のアドレスのデータが消去された場合、
データ書込み手段は、
書込み対象アドレスを、第Ｎ＋１番目のメモリ領域内であって最上位の書込み可能なアドレスとする
請求項１記載のメモリ管理装置。
【請求項３】
前記データ書込み手段が、前記メモリの書込み可能な最下位のアドレスまでデータを書き込むと、
前記制御手段は、
第２の管理手段が消去有を示すメモリ領域に対応するすべての第１の管理手段を全書込み無とし、さらに、すべての第２の管理手段を消去無とし、その結果、対応する第１の管理手段が全書込み無を示し、かつ、対応する第２の管理手段が消去無を示すメモリ領域を、書込み可能なメモリ領域として特定する
請求項１記載のメモリ管理装置。
【請求項４】
データの書込み及び消去に応じて、データの書込み単位より大きい所定のメモリ領域毎に、データがすべて書き込まれたか否か（全書込み有／無）を示す第１の管理部、および、少なくとも一部のデータが消去されたか否か（消去有／無）を示す第２の管理部を制御するメモリ管理方法であって、
前記全書込み無を示し、かつ、前記消去無を示すメモリ領域を、書込み可能なメモリ領域として特定し、
データを書き込む際に、特定された書込み可能なメモリ領域に対してデータの書込みを行う
メモリ管理方法。
【請求項５】
データの書込み対象アドレスが含まれる第Ｎ番目のメモリ領域内であって、前記書込み対象アドレスより上位のアドレスのデータが消去された場合、
書込み対象アドレスを、第Ｎ＋１番目のメモリ領域内であって最上位の書込み可能なアドレスとしてデータの書込みを行う
請求項４記載のメモリ管理方法。
【請求項６】
メモリの書込み可能な最下位のアドレスまでデータを書き込むと、
前記第２の管理部が消去有を示すメモリ領域に対応するすべての第１の管理部を全書込み無とし、
すべての第２の管理部を消去無とし、
対応する第１の管理部が全書込み無を示し、かつ、対応する第２の管理部が消去無を示すメモリ領域を、書込み可能なメモリ領域として特定する
請求項４記載のメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的書き換え可能な不揮発性メモリのメモリ管理装置およびメモリ管理方法に関するものである。
【背景技術】
【０００２】
一般に書換可能な不揮発性メモリとして、ＥＥＰＲＯＭやフラッシュメモリ等が利用されているが、現状の技術では、このような不揮発性メモリに対するデータの書換回数には制限があり、１０4 回ないし１０6 回程度の書換によって、不揮発性メモリは、物理的に寿命となる。
特に、不揮発性メモリ（以下、メモリ）に対する書込み管理が適切になされていない場合には、下記に述べる理由から、メモリに対するデータの書込みが、メモリの一部分に集中してしまうので、その書込みが集中したメモリの一部分については、相対的に早く上述した書換制限回数に達してしまい、その場合には、メモリ全体を有効に活用することができない。
【０００３】
すなわち、一般にメモリに対するデータの書込みにおいては、メモリの最初のアドレスから空き領域を検索し、最初の空き領域にデータを書き込むようにしているので、現在の書込み位置より上位のアドレスにおいてデータの消去が発生した場合には、再びそのアドレス（消去が発生したアドレス）にデータが書き込まれることになる。さらに、書込みがされた直後に同じアドレスに再度消去が発生した場合には、書込み指示に応じて、再び同じアドレスにデータが書き込まれる。
したがって、メモリの上位のアドレスに対して、集中してデータの書込みが行われ、上述した書換回数制限を越える結果、メモリが破壊されてしまうことになる。特に、大容量の半導体メモリでは、その一部分（メモリの上位アドレス部分）だけが破壊されたことで、メモリの大部分がまだ書換回数制限に達していないにもかかわらず、全体としての使用できなくなり、書込み動作に対するメモリの延命化が要望される。
【０００４】
この改善策として、独立に消去可能な最小単位である１ブロック毎に対して、３個のフラグ、すなわち、ブロックに有意なデータが記録されているかを管理する有効フラグ、データの書込みをブロックの順位にしたがって１方向に向かって循環して使用されるように管理するための消去フラグ、および、ブロックに記録されたデータがある時点から後に変更されたかを管理する変更フラグの３個の管理フラグを設定して、書込みが特定の記憶領域に集中することなく、複数の記憶領域全体に均一に行われるようにした発明が提案されている（下記特許文献１）。
【特許文献１】特許第３４１２８３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記特許文献１に記載された発明によれば、独立に消去可能な最小単位である１ブロック毎に対して３個の管理フラグを設定しているため、不揮発性メモリに占める管理フラグの容量が無視できないものとなる。特に、昨今、不揮発性メモリの容量は、メガバイトからギガバイトへ大容量化しているので、メモリの大容量化に伴って上述した管理フラグが占めるメモリサイズも甚大なものとなる。
したがって、大容量化したメモリ容量を有効利用するために、メモリのための管理フラグは、書込み単位よりも大きいまとまった記憶単位（たとえば、セグメント単位）毎に行い、かつ、その管理フラグについても必要最小限の数とした効率的なものとする改善が望まれる。
【０００６】
上記内容を鑑み、本発明の目的は、書込み単位よりも大きい所定の記憶単位毎にメモリを管理し、書込み動作を制御可能なメモリ管理装置およびメモリ管理手法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するための第１の観点は、データの書込み単位より大きい所定のメモリ領域毎に、メモリを管理するメモリ管理装置であって、前記メモリ領域毎に設定され、対応するメモリ領域にデータがすべて書き込まれたか否か（全書込み有／無）を管理する第１の管理手段と、前記メモリ領域毎に設定され、対応するメモリ領域の少なくとも一部のデータが消去されたか否か（消去有／無）を管理する第２の管理手段と、データの書込み及び消去指示に応じて、前記第１の管理手段および前記第２の管理手段を制御し、対応する第１の管理手段が全書込み無を示し、かつ、対応する第２の管理手段が消去無を示すメモリ領域を、書込み可能なメモリ領域として特定する制御手段と、データを書き込む際に、前記制御手段により特定された書込み可能なメモリ領域に対してデータの書込みを行うデータ書込み手段とを有する。
【０００８】
好適には、前記データ書込み手段のデータの書込み対象アドレスが含まれる第Ｎ番目のメモリ領域内であって、前記書込み対象アドレスより上位のアドレスのデータが消去された場合、データ書込み手段は、書込み対象アドレスを、第Ｎ＋１番目のメモリ領域内であって最上位の書込み可能なアドレスとする。
【０００９】
好適には、前記データ書込み手段が、前記メモリの書込み可能な最下位のアドレスまでデータを書き込むと、前記制御手段は、第２の管理手段が消去有を示すメモリ領域に対応するすべての第１の管理手段を全書込み無とし、さらに、すべての第２の管理手段を消去無とし、その結果、対応する第１の管理手段が全書込み無を示し、かつ、対応する第２の管理手段が消去無を示すメモリ領域を、書込み可能なメモリ領域として特定する。
【００１０】
上記目的を達成するための第２の観点は、データの書込み及び消去に応じて、データの書込み単位より大きい所定のメモリ領域毎に、データがすべて書き込まれたか否か（全書込み有／無）を示す第１の管理部、および、少なくとも一部のデータが消去されたか否か（消去有／無）を示す第２の管理部を制御するメモリ管理方法であって、前記全書込み無を示し、かつ、前記消去無を示すメモリ領域を、書込み可能なメモリ領域として特定し、データを書き込む際に、特定された書込み可能なメモリ領域に対してデータの書込みを行う。
【００１１】
上記第１の観点に係るメモリ管理装置によれば、第１の管理手段は、データの書込み単位より大きい所定のメモリ領域毎に設定され、対応するメモリ領域にデータがすべて書き込まれたか否か（全書込み有／無）を管理し、第２の管理手段は、上記メモリ領域毎に設定され、対応するメモリ領域の少なくとも一部のデータが消去されたか否か（消去有／無）を管理し、制御手段は、データの書込み及び消去指示に応じて、前記第１の管理手段および前記第２の管理手段を制御し、対応する第１の管理手段が全書込み無を示し、かつ、対応する第２の管理手段が消去無を示すメモリ領域を、書込み可能なメモリ領域として特定し、データ書込み手段は、データを書き込む際に、前記制御手段により特定された書込み可能なメモリ領域に対してデータの書込みを行う。
【発明の効果】
【００１２】
本発明によれば、書込み単位よりも大きい所定の記憶単位毎にメモリを管理し、書込み動作を制御するので、管理されるメモリ単位毎に均等な頻度で書込みが行われる結果、メモリの延命化を図ることができるという利点がある。
【発明を実施するための最良の形態】
【００１３】
第１の実施形態
以下、第１の実施形態について説明する。まず、図１に関連付けて本実施形態におけるメモリ管理装置１の構成について説明する。
図１に示すとおり、メモリ管理装置１は、ＣＰＵ１０と、制御手段としてのセグメント制御部（ＳＥＧ＿Ｃ）２０と、メモリ制御部（ＭＥＭ＿Ｃ）３０と、ドライバ（ＤＲＶ）４０と、メモリ（ＭＥＭ）５０とにより構成される。
【００１４】
ＣＰＵ１０は、メモリ管理装置１の全体的な制御を行う。特に、動作するプログラムの指示に応じて、メモリ５０上への書込みデータを含むデータ書込み命令をセグメント制御部２０に対して送出する。また、メモリ５０上の消去先アドレスを指定したデータ消去命令をセグメント制御部２０に対して送出する。
また、メモリ５０上の読出し先アドレスを指定したデータ読出し命令をメモリ制御部３０に対して送出し、読み出されたメモリ５０上のデータを受信する。
【００１５】
セグメント制御部２０は、ＣＰＵ１０から供給されたメモリ５０上への書込みデータを含むデータ書込み命令に基づいて、メモリ制御部３０に対してデータ書込み指示を行う。  また、後述するように、メモリ制御部３０がメモリ５０に対してデータの書込みを行った後に、現在の書込み対象アドレスをセグメント制御部２０に通知するので、セグメント制御部２０は、受信した現在の書込み対象アドレスに基づいて、メモリ５０上の管理フラグを更新する。
【００１６】
また、メモリ制御部３０が、セグメント制御部２０からの書込み指示に応じてメモリ５０にデータを書き込む際に、メモリ５０の最終セグメントの書込み可能な最終アドレスまで、データの書込みが終了した場合には、セグメント制御部２０は、メモリ制御部３０からその旨の通知（書込み終了通知）を受信する。
【００１７】
また、セグメント制御部２０は、ＣＰＵ１０からメモリ５０上の消去先アドレスを指定した消去命令を受信した場合、指定された消去先アドレスのデータ消去をメモリ制御部３０に指示するとともに、メモリ５０上の指定された消去先アドレスに対応するセグメントの管理フラグを更新する。
さらに、ＣＰＵ１０により指定された消去先アドレスが、メモリ制御部３０の現在の書込み対象アドレスと同じセグメントに存在し、かつ、現在の書込み対象アドレスより上位のアドレスである場合には、セグメント制御部２０は、メモリ制御部３０に対し、書込み対象セグメントを更新するように指示する。
すなわち、書込み対象セグメントを、現在の書込み対象セグメントより下位であって、書込み可能なセグメントに変更するように指示する。後述するように、セグメント制御部２０は、メモリ制御部３０で管理している書込み対象アドレスを受信するので、消去先アドレスと書込み対象アドレスの対比が可能であり、上述した書込み対象セグメントの更新指示が可能である。
【００１８】
書込み制御部３０は、ＣＰＵ１０から供給されるメモリ５０上の読出し先アドレスを指定したデータ読出し命令に基づいて、メモリ５０の指定されたアドレスからデータを読み出す。
【００１９】
また、メモリ制御部３０は、セグメント制御部２０からのデータ書込み指示に基づいて、メモリ５０にデータを書き込む。
データを書込み際には、基本的には、書込み可能な最上位のセグメントから、順に書込み対象セグメントとしてデータの書込みを行い、また、各書込み対象セグメントでは、書込み可能な最上位のアドレスから順にデータの書込みを行うが、前述したとおり、セグメント制御部２０により書込み対象セグメントの更新指示があった場合には、書込み対象セグメントを更新してデータの書込みを行う。
したがって、メモリ５０に全くデータが書き込まれていない状態では、最初のセグメント（後述する第０セグメント）の最初のアドレスから順に、データの書込みが行われる。  
【００２０】
以上のとおり、メモリ制御部３０では、データ書込み指示に対するデータの書込み開始セグメントおよびアドレスを、それぞれ、書込み対象セグメントおよび書込み対象アドレスとして常に管理し、書込み対象アドレスは、更新される毎に、セグメント制御部２０へ送信される。したがって、セグメント制御部２０側でも、送信される書込み対象アドレスから、書込み対象セグメントおよび書込み対象アドレスを常に把握している。
【００２１】
一方、メモリ５０の書込み可能な最終アドレスまでデータの書込みが行われると、メモリ制御部３０は、セグメント制御部２０に対して書込み終了通知を行う。この書込み終了通知に応じて、セグメント制御部２０は、メモリ５０上の管理フラグを更新し、書込み可能なセグメントを制限する。メモリ制御部３０は、以後、この書込み可能なセグメントの中で、書込み対象セグメントを管理する。
【００２２】
メモリ制御部３０は、セグメント制御部２０からのデータ消去指示に基づいて、メモリ５０の指定されたアドレスのデータを消去する。
その際、消去先アドレスが、消去指示を受けた時点の書込み対象アドレスと同じセグメントに存在し、かつ、現在の書込み対象アドレスより上位のアドレスである場合、メモリ制御部３０は、セグメント制御部２０より書込み対象セグメントを更新するように指示を受ける。
すなわち、メモリ制御部３０は、この書込み対象セグメントの更新指示に応じて、現在の書込み対象アドレスより下位のアドレスに空き領域がある場合でも、書込み対象セグメントを、現在の書込み対象セグメントより下位の書込み可能なセグメントに変更する。
【００２３】
ドライバ４０は、上述したように、セグメント制御部２０およびメモリ制御部３０が、メモリ５０上のデータ／管理フラグに対してアクセスする際に駆動される。
【００２４】
メモリ５０は、データの消去単位であるブロック（たとえば、５１２バイト）が複数まとまって構成されるセグメント単位（たとえば、１〜８メガバイト）毎に、書込み動作が管理されるメモリであり、各セグメント毎のデータの書込み状態および消去状態が、各セグメントに対応するフラグによって管理される。
本実施の形態においては、上位のセグメントから下位のセグメントに対して、それぞれ第０セグメント（ＳＥＧ＿０），第１セグメント（ＳＥＧ＿１），第２セグメント（ＳＥＧ＿２），…と定義して以下の説明を行う。
【００２５】
第１の管理手段としての全書込みフラグ（ＡＷ＿Ｆ）は、２値データ（１：全書込み無し（クリア），０：全書込み有り（セット））である。
メモリ５０にデータが全く書き込まれていない状態では、各セグメントに対応する全書込みフラグ（ＡＷ＿Ｆ）は、すべてクリア（全書込み無し）されている。そして、対応するセグメントにデータがすべて書き込まれた場合に、全書込みフラグ（ＡＷ＿Ｆ）は、セット（全書込み有り）される。
【００２６】
第２の管理手段としての消去フラグ（ＥＲ＿Ｆ）は、２値データ（１：消去無し（クリア），０：消去有り（セット））である。
メモリ５０上のデータが全く消去されていない状態では、各セグメントに対応する消去フラグ（ＥＲ＿Ｆ）は、すべてクリア（消去無し）されている。そして、対応するセグメントのデータに１ブロックでも消去が発生した場合には、消去フラグ（ＥＲ＿Ｆ）は、セット（消去有り）される。
【００２７】
書込み可能フラグ（ＷＥ＿Ｆ）は、上述した全書込みフラグ（ＡＷ＿Ｆ）と消去フラグ（ＥＲ＿Ｆ）のＡＮＤ値が、サーバ装置２０により常に演算されて格納される。
したがって、書込み可能フラグ（ＷＥ＿Ｆ）は、メモリ５０のデータの書込み・消去に応じて直接的に管理されるフラグではないので、ここでは、管理フラグとは呼ばない。
後述吸うように、書込み可能な最終アドレスまでデータの書込みが終了すると、セグメント制御部２０により管理フラグである全書込みフラグ（ＡＷ＿Ｆ）および消去フラグ（ＥＲ＿Ｆ）が更新されることにより、書込み可能フラグ（ＷＥ＿Ｆ）は、書込み可能なセグメントを示すことになる（書込み可能：「１」）。
【００２８】
次に、図２〜５に関連付けて、データの書込み・消去に応じて、メモリ５０上の各セグメントに対応する管理フラグ（全書込みフラグ（ＡＷ＿Ｆ）および消去フラグ（ＥＲ＿Ｆ））のセグメント制御部２０による更新動作について説明する。
【００２９】
図２は、メモリ５０上に全くデータの書込みがなされていない状態における第０セグメント（ＳＥＧ＿０），第１セグメント（ＳＥＧ＿１），第２セグメント（ＳＥＧ＿２）の管理フラグの動作を説明するための図である。
前述したように、各セグメントは、消去単位であるブロック（ＢＬＫ）が複数まとまって構成される。そして、メモリ５０上に全くデータの書込みがなされていない状態では、全書込みフラグ（ＡＷ＿Ｆ）は、すべてクリア（「１」）され、また、消去フラグ（ＥＲ＿Ｆ）も、すべてクリア（「１」）されている。
さらに、各セグメント毎に書込み可能セグメントを示す書込み可能フラグ（ＷＥ＿Ｆ）が設定される。この書込み可能フラグ（ＷＥ＿Ｆ）は、セグメント制御部２０によって、全書込みフラグ（ＡＷ＿Ｆ）と消去フラグ（ＥＲ＿Ｆ）のＡＮＤの値が常に格納される。したがって、全書込みフラグ（ＡＷ＿Ｆ）と消去フラグ（ＥＲ＿Ｆ）の更新に従って、書込み可能フラグ（ＷＥ＿Ｆ）は書き換えられる。
メモリ５０の各セグメントにデータがまったく書き込まれていない場合には、書込み可能フラグ（ＷＥ＿Ｆ）はすべてのセグメントに対して「１」となっている。
【００３０】
図３は、メモリ５０上の一部のデータの書込みがなされている状態における第０セグメント（ＳＥＧ＿０），第１セグメント（ＳＥＧ＿１），第２セグメント（ＳＥＧ＿２）の管理フラグの動作を説明するための図である。
ＣＰＵ１０からのデータ書込み命令がセグメント制御部２０に供給され、さらに、セグメント制御部２０から書込み指示を受けたメモリ制御部３０は、ドライバ４０を制御して、メモリ５０の上位のアドレスから書込みを開始する。図３に図示した例では、第０セグメントをすべて書込み、第１セグメントの途中まで書込みがなされている。
なお、メモリ制御部３０は、書込み可能なセグメントを検索する際には、書込み可能フラグ（ＷＥ＿Ｆ）が「１」を示すセグメントを書込み可能なセグメントと判断して、その上位のセグメントから書込みを行う。まったくデータがメモリ５０に書き込まれていない場合は、すべてのセグメントに対して書込み可能フラグ（ＷＥ＿Ｆ）が「１」を示しているので、第０セグメントから順にデータの書込みを行う。
【００３１】
メモリ制御部３０によるデータ書込みが終了すると、セグメント制御部２０は、メモリ制御部３０から書込み対象アドレス（書込み終了時のアドレス）を通知されるので、ドライバ４０を制御して、データがすべて書き込まれたセグメントに対応する全書込みフラグ（ＡＷ＿Ｆ）をセット（「０」）する。図３に図示した例では、第０セグメントに対応する全書込みフラグ（ＡＷ＿Ｆ）のみがセットされ、まだ書込みが途中である第１セグメント（ＳＥＧ＿１）は、全書込みフラグ（ＡＷ＿Ｆ）がセットされない。
【００３２】
図４は、メモリ５０上の一部のデータの書込みがなされている状態において、すでに書込みがなされているメモリの一部のブロックに消去が発生した場合の第０セグメント（ＳＥＧ＿０），第１セグメント（ＳＥＧ＿１），第２セグメント（ＳＥＧ＿２）の管理フラグの動作を説明するための図である。
ＣＰＵ１０からのデータ消去命令がセグメント制御部２０に供給され、さらに、セグメント制御部２０から消去指示を受けたメモリ制御部３０は、ドライバ４０を制御して、メモリ５０上の指定された消去先アドレスのデータ（ブロック単位）を消去する。図４に図示する例では、第０セグメント（ＳＥＧ＿０）の一部のデータが消去されている。
【００３３】
さらに、セグメント制御部２０は、消去されたデータのアドレスが含まれるセグメントに対応する消去フラグ（ＥＲ＿Ｆ）をセット（「０」）する。図４に図示する例では、第０セグメント（ＳＥＧ＿０）の一部のデータのみが消去されたので、第０セグメントに対応する消去フラグ（ＥＲ＿Ｆ）のみがセットされる。
【００３４】
図５は、メモリ５０上の一部のデータの書込みがなされている状態において、すでに書込みがなされているメモリの一部のブロックに消去が発生した場合の第０セグメント（ＳＥＧ＿０），第１セグメント（ＳＥＧ＿１），第２セグメント（ＳＥＧ＿２）の管理フラグの動作を説明するための図である。
ＣＰＵ１０からのデータ消去命令がセグメント制御部２０に供給され、さらに、セグメント制御部２０から消去指示を受けたメモリ制御部３０は、ドライバ４０を制御して、メモリ５０上の指定された消去先アドレスのデータ（ブロック単位）を消去する。図５に図示する例では、第１セグメント（ＳＥＧ＿０）の一部のデータが消去されている。
【００３５】
セグメント制御部２０では、図４に関連付けて説明した動作と同様に、消去先アドレスが属するセグメントの消去フラグ（ＥＲ＿Ｆ）をセット（「０」）する。
さらに、メモリ制御部３０で管理する書込み対象アドレスがセグメント制御部２０に通知されると、セグメント制御部２０では、消去を行ったデータのアドレスが、通知された書込み対象アドレスと同じセグメントに属し、かつ、消去先アドレスが書込み対象アドレスより上位であることがわかるので、セグメント制御部２０は、メモリ制御部３０に対し、書込み対象セグメントを更新するように指示する。これにより、メモリ制御部３０は、書込み対象セグメントを第１セグメント（ＳＥＧ＿１）から第２セグメント（ＳＥＧ＿２）に更新する。
【００３６】
以上、図２〜５に関連付けて、メモリ５０上の各セグメントに対応する管理フラグ（全書込みフラグ（ＡＷ＿Ｆ）および消去フラグ（ＥＲ＿Ｆ））の更新動作について説明したように、ＣＰＵ１０からデータの書込み・消去命令があった場合、データがすべて書込まれたセグメントの全書込みフラグ（ＡＷ＿Ｆ）とデータの消去が発生したセグメントの消去フラグ（ＥＲ＿Ｆ）がセットされる。また、書込み対象のセグメント内で、書込み対象アドレスより上位のアドレスのデータに消去が発生した場合には、書込み対象セグメントが更新される。
【００３７】
また、前述したように、データの書込み指示に応じてデータの書込みを行う際、メモリ制御部３０は、書込み可能フラグ（ＷＥ＿Ｆ）が「１」であるセグメントから順にデータの書込みを行う。
これにより、すでにデータ消去が発生したセグメントを回避し、空き領域のある（＝全書込みがなされていない）セグメントに対してデータの書込みを行うため、一度消去の発生した場所にデータの書込みが繰り返し行われるということがなく、したがって上位のセグメントにデータのアクセスが集中するということがない。
また、最初のセグメントから順にデータの書込みのための空き領域を検索する必要がなく、書込み可能フラグ（ＷＥ＿Ｆ）をチェックするだけで書込み可能なセグメントを検索できるので、高速なデータ書込みが可能となる。
【００３８】
次に、書込み対象アドレスが、メモリ５０の書込み可能な最終アドレスに達した場合の処理動作、すなわち、セグメント制御部２０の管理フラグに対する処理動作について、図６〜８に関連付けて説明する。
図６は、メモリ制御部３０によるデータの書込みがメモリ５０の書込み可能な最終アドレスまで行われた場合の書込み状態の一例を示す図であり、（ａ）〜（ｒ）は、それぞれ、メモリ５０の第０セグメント〜第１８セグメントに対応する。図６において、黒く示した部分は、データが書き込まれている状態を示し、白い部分は、データが途中で消去された結果、書込み対象アドレスが書込み可能な最終アドレスに達した時点では、データが書き込まれていない状態を示す。
【００３９】
書込み対象アドレスが、メモリ５０の書込み可能な最終アドレスに達すると、セグメント制御部２０は、消去フラグ（ＥＲ＿Ｆ）がセットされているセグメントの全書込みフラグ（ＡＷ＿Ｆ）をクリアする。つまり、各セグメントについて、（全書込みフラグ（ＡＷ＿Ｆ））ＮＯＲ（消去フラグ（ＥＲ＿Ｆ））の演算結果を全書込みフラグ（ＡＷ＿Ｆ）に書き込む。その結果を図７に示す。
すなわち、図６において消去フラグ（ＥＲ＿Ｆ）がセットされている（ｃ），（ｄ），（ｋ）〜（ｎ），（ｐ），（ｒ）に示すセグメントの中で、全書込みフラグ（ＡＷ＿Ｆ）がセットされている（ｄ），（ｋ），（ｎ）に示すセグメントのフラグをクリアする結果、図７に示すような管理フラグの状態となる。
次に、すべての消去フラグ（ＥＲ＿Ｆ）をクリアする。この結果、図８に示す管理フラグの状態が得られる。
【００４０】
以上の操作の結果、図８に示すとおり、空き領域が存在するセグメントは、対応する書込み可能フラグ（ＷＥ＿Ｆ）が「１」を示す状態となる。
これにより、書込み可能な最終アドレスに達した場合のフラグの更新処理は終了し、以後、メモリ制御部３０は、書込み指示に応じて、書込み可能フラグ（ＷＥ＿Ｆ）が「１」を示すセグメントを書込み対象セグメントとして、上位から書込みを行う。
【００４１】
以上説明したように、本実施形態におけるメモリ管理装置１によれば、ＣＰＵ１０と、セグメント制御部２０と、メモリ制御部３０と、ドライバ４０と、メモリ５０とを有し、セグメント制御部２０は、メモリ５０に対するデータの消去および書込みの際、メモリ５０のセグメント毎に設定された管理フラグを更新し、管理フラグに基づいて書込み可能フラグ（ＷＥ＿Ｆ）を演算し、メモリ制御部３０は、書込み可能フラグ（ＷＥ＿Ｆ）に基づいてデータの書込み可能セグメントを特定し、特定された書込み可能セグメントに対して順に、メモリ５０に対してデータの書込みを行う。
具体的には、管理フラグとして、セグメント内のすべてのアドレスが書き込まれたか否かを示す全書込みフラグ（ＡＷ＿Ｆ）（１：全書込み有，０：全書込み無）と、対応するセグメントにデータの消去が発生したか否かを示す消去フラグ（ＥＲ＿Ｆ）（１：消去有，０：消去無）とを設定し、セグメント制御部２０は、これらの管理フラグのＡＮＤ値である書込み可能フラグ（ＷＥ＿Ｆ）を算出し、メモリ制御部３０は、書込み可能フラグ（ＷＥ＿Ｆ）が「１」であるセグメントを書込み可能なセグメントとして、データの書込みを行う。
また、書込み対象のセグメントの中で、書込み対象アドレスより上位のアドレスのデータが消去された場合には、セグメント制御部２０は、メモリ制御部３０に対して、書込み対象セグメントを次に書込み可能なセグメントに更新するように指示する。
さらに、メモリ５０の書込み可能な最終アドレスまでデータの書込みが終了すると、空き領域が存在するセグメントに対して書込み可能フラグ（ＷＥ＿Ｆ）がセット（「１」）されるように、上記管理フラグに対し所定の更新を行うので、以下の効果を得ることができる。
【００４２】
したがって、以下の効果を得ることができる。
すなわち、すでにデータ消去が発生したセグメントを回避し、空き領域のある（＝全書込みがなされていない）セグメントに対してデータの書込みを行うため、一度消去の発生した場所にデータの書込みが繰り返し行われるということがなく、したがって上位のセグメントにデータのアクセスが集中するということがない。
【００４３】
さらに、書込み対象のセグメントの中で、書込み対象アドレスより上位のアドレスのデータが消去された場合には、書込み対象セグメントを次に書込み可能なセグメントに更新させるため、１つのアドレスに対して、集中してデータの消去と書込みが発生することがない。
【００４４】
メモリの書込み可能な最終アドレスまでデータの書込みが終了すると、管理フラグを更新することで、その時点で空き領域を有するセグメントを書込み可能セグメントとし、以後のデータの書込みをその書込み可能な上位のセグメントから順に行うので、メモリに対してほぼ均等にアクセスを行うことが可能となる。
【００４５】
データの書込み・消去を管理するための管理フラグは、実質的に各セグメント毎に２つのみでよく、メモリが大容量化した場合でも、メモリに占める管理フラグの割合は比較的小さいので、メモリ容量を効率的に活用することが可能であり、メモリの大容量化に適している。
【００４６】
また、最初のセグメントから順にデータの書込みのための空き領域を検索する必要がなく、書込み可能フラグ（ＷＥ＿Ｆ）をチェックするだけで書込み可能なセグメントを検索できるので、高速なデータ書込みが可能となる。
【００４７】
なお、本実施形態は、上述した内容に拘泥せず、様々な変更が可能である。
たとえば、上記説明では、セグメント制御部２０とメモリ制御部３０を分離して説明したが、１つのメモリ制御部として構成してもよい。
また、上記説明では、管理フラグおよび書込み可能フラグは、メモリ５０の中で各セグメントに対応して格納される構成としたが、メモリ５０の外部のメモリにより管理するようにしてもよい。
【００４８】
第２の実施形態
本実施形態のメモリ管理装置１においては、メモリ５０がＦＡＴ(File Allocation Table) により構成される。ＦＡＴは、たとえばパーソナルコンピュータ等で使用されるファイル形式であり、基本的には、上述したセグメントという概念がない。
したがって、ＦＡＴ上のアドレスに対してセグメントに相当するオフセットをかけることで、第１の実施形態で説明したセグメント毎のメモリに対する書込み，消去の管理を擬似的に行う必要があり、その場合の実施形態について以下説明する。
【００４９】
図９は、ＦＡＴのファイル構造とその擬似的な管理状態を説明するための図であり、（Ａ）は実際のＦＡＴのファイル構造を、（Ｂ）はＦＡＴのファイル構造を擬似的にセグメント管理する状態を、それぞれ示している。
図９（Ａ）に示すとおり、ＦＡＴのファイル構造は、上位のアドレスから下位のアドレスに向けて順に構成され、セグメントという概念がない。
図９（Ｂ）は、セグメント単位で構成されない図９（Ａ）に示すＦＡＴのファイル構造を、たとえば５１２のアドレス値毎にオフセットさせて、擬似的なセグメント管理を行う。たとえば、図９（Ａ）に示すアドレス値０〜５１１は、図９（Ｂ）の第０セグメントで、図９（Ａ）に示すアドレス値５１２〜１０２３は、図９（Ｂ）の第１セグメントで、それぞれ擬似的に管理される。
この場合、図９に示すように、第０セグメントで擬似的に管理されるＦＡＴアドレスのオフセット（ｏｆｓｔ）を０、第１セグメントで擬似的に管理されるＦＡＴアドレスのオフセットを５１２、第０セグメントで擬似的に管理されるＦＡＴアドレスのオフセットを１０２４、…というように定義する。すなわち、各セグメントに属する最初のＦＡＴアドレス値をオフセット（ｏｆｓｔ）とする。
【００５０】
なお、本実施形態でセグメントによってＦＡＴアドレスを説明を行うのは、第１の実施形態との関係において理解が容易になるためであり、実際には、以下で説明するＦＡＴのアドレス値の管理は、セグメントではなく、上述したオフセットによって行っている。したがって、メモリ制御部３０がＦＡＴであるメモリ５０にアクセスする場合には、オフセット毎に検索を行う。たとえば、アドレス値５１４であれば、オフセット５１２の３番目のアドレスということになる。
このように、ＦＡＴアドレスをオフセット毎に管理することで、図９に示すような擬似的なセグメント管理を行うことが可能となる。
【００５１】
次に、ＦＡＴであるメモリ５０にファイルを書込み際の管理フラグの処理を図１０，１１に関連付けて説明する。
図１０において、（Ａ）はＦＡＴのアドレス値５１２〜１０２３を第０セグメント（オフセット：５１２）で、（Ｂ）はＦＡＴのアドレス値１０２４〜１５３５を第１セグメント（オフセット：１０２４）で、（Ｃ）はＦＡＴのアドレス値１５３６〜２０４７を第２セグメント（オフセット：１５３６）で、（Ｄ）はＦＡＴのアドレス値２０４８〜２５５９を第３セグメント（オフセット：２０４８）で、擬似的に管理していることを示している。
全書込みフラグ（ＡＷ＿Ｆ），消去フラグ（ＥＲ＿Ｆ）および書込み可能フラグ（ＷＥ＿Ｆ）の定義については、第１の実施形態で説明したとおりである。
なお、図１０において、１セグメント当たりのＦＡＴアドレスは５１２としているが、２５６でも１０２４でも２の巾乗の値を任意に選択することができる。
【００５２】
ここで、図１０に示すように、メモリ５０にファイルの書込みがアドレス値７６８からアドレス値２１９５( ＥＯＦ(End Of File))まで行われたとする。
アドレス値２１９５( ＥＯＦ(End Of File))までファイルの書込みが行われると、セグメント制御部２０は、全書込みフラグ（ＡＷ＿Ｆ）をセットするために、下記式（１）の演算を行う。
ｆｌａｇ＿ｓｅｔ＝（ＡＤＲ−ｏｆｓｔ）／ｓｅｇｆａｔ  …  （１）
ここで、ｆｌａｇ＿ｓｅｔ：全書込みフラグ（ＡＷ＿Ｆ）をセットする数
ＡＤＲ：          書込み対象最終アドレス（ここでは、ＥＯＦ）
ｏｆｓｔ：        書込み開始アドレスのオフセット
ｓｅｇｆａｔ：    １セグメント当たりのＦＡＴアドレス
である。
【００５３】
上述した例では、ＡＤＲ＝２１９５，ｏｆｓｔ＝５１２，ｓｅｇｆａｔ＝５１２であるので、ｆｌａｇ＿ｓｅｔ＝３となる。これにより、図１０に示すように、ＥＯＦが書き込まれた（Ｄ）で示すセグメントより、３個上位のセグメントまでの全書込みフラグ（ＡＷ＿Ｆ）を、セグメント制御部２０はセットする（「０」）。
【００５４】
図１１は、ファイル書込み時の処理を示すフローチャートの一例である。
以下、図１１に示すフローチャートの各ステップについて説明する。
ＣＰＵ１０からファイルの書込み命令を受けたセグメント制御部２０は、第０セグメントから順に、全書込みフラグ（ＡＷ＿Ｆ）をチェックし（ステップＳＴ１０）、全書込みフラグ（ＡＷ＿Ｆ）が「０」を示す場合、すなわち、すべてのアドレスに書込みが行われている場合には、オフセット（ｏｆｓｔ）を１セグメント分のアドレス分（ｓｅｇｆａｔ）シフトしていく（ステップＳＴ１１）。これにより、全書込みがなされているセグメント（オフセット）は書込み対象とはならず、書込み可能なセグメント（全書込みフラグ（ＡＷ＿Ｆ）＝１）が検索されるまで、オフセットがシフトされる。
【００５５】
全書込みフラグ（ＡＷ＿Ｆ）が「０」である書込み可能なセグメントが検索されると、その検索されたセグメントに相当するオフセットの最初のアドレスから空き領域の検索を行う（ステップＳＴ１２）。
そして、書込みアドレス、すなわち空き領域の最初のアドレスを検索すると、そのアドレスが最終セグメントの最終アドレスであるか否かがチェックされる（ステップＳＴ１３）。もし、最終セグメントの最終アドレスである場合には、第１の実施形態で説明したように、メモリ制御部３０からセグメント制御部２０に書込み終了通知が送信され、セグメント制御部２０は、管理フラグの更新を行う。
【００５６】
すなわち、各セグメント（オフセット）について、（全書込みフラグ（ＡＷ＿Ｆ））ＮＯＲ（消去フラグ（ＥＲ＿Ｆ））の演算結果を全書込みフラグ（ＡＷ＿Ｆ）に書き込んだ後（ステップＳＴ１４）、消去フラグ（ＥＲ＿Ｆ）をすべてクリアする（ステップＳＴ１５）。これにより、空き領域が存在するセグメントは、対応する書込み可能フラグ（ＷＥ＿Ｆ）が「１」を示す状態となり、以後、メモリ制御部３０は、書込み可能フラグ（ＷＥ＿Ｆ）が「１」となっているセグメントを書込み可能セグメントとして、、書込み動作を行う。
最終セグメントの最終アドレスでない場合には、検索されたセグメントに対してデータ（ファイル）の書込みを開始し（ステップＳＴ１６）、ＥＯＦの書込みがなされるまでデータの書込みを行う（ステップＳＴ１７）。
【００５７】
ファイルの書込みが終了すると、上述した式（１）の演算を行い（ステップＳＴ１８）、ｆｌａｇ＿ｓｅｔ（全書込みフラグ（ＡＷ＿Ｆ）をセットする数）を求める。そして、ｆｌａｇ＿ｓｅｔが示す数だけ上位のセグメント（オフセット）に対応する全書込みフラグ（ＡＷ＿Ｆ）から、１個前のセグメント（オフセット）に対応する全書込みフラグ（ＡＷ＿Ｆ）まで、全書込みフラグ（ＡＷ＿Ｆ）をセットする（ステップＳＴ１９）。
【００５８】
さらに、書込みが行われた分だけオフセットの更新を行う（ステップＳＴ２０）。したがって、オフセットの値は、第１の実施形態における書込み対象セグメントに相当し、メモリ制御部３０により管理され、次回のファイル書込みに対しては、新しいオフセットから全書込みフラグ（ＡＷ＿Ｆ）の検索が開始される（ステップＳＴ１０）。
【００５９】
次に、メモリ５０（ＦＡＴ）のファイルを消去する場合の管理フラグの処理について、図１２に関連付けて説明する。
ここで、図１２に示すように、メモリ５０にファイルの消去がアドレス値７６８からアドレス値２１９５( ＥＯＦ(End Of File))まで行われたとする。
アドレス値２１９５( ＥＯＦ(End Of File))までファイルの消去が行われると、セグメント制御部２０は、消去フラグ（ＥＲ＿Ｆ）をセットするために、下記式（２）の演算を行う。
Ｄｆｌａｇ＿ｓｅｔ＝｛（ＡＤＲ＿ＥＯＤ−ＡＤＲ＿ＳＯＤ）
＋ＡＤＲ＿ＳＯＤ％ｓｅｇｆａｔ｝／ｓｅｇｆａｔ  …（２）
ここで、Ｄｆｌａｇ＿ｓｅｔ：消去フラグ（ＥＲ＿Ｆ）をセットする数
ＡＤＲ＿ＥＯＤ：    消去されたファイルの最終アドレス
ＡＤＲ＿ＳＯＤ：    消去の開始アドレス
ｓｅｇｆａｔ：      １セグメント当たりのＦＡＴアドレス
である。
【００６０】
上述した例では、ＡＤＲ＿ＥＯＤ＝２１９５，ＡＤＲ＿ＳＯＤ＝７６８，ｓｅｇｆａｔ＝５１２であるので、Ｄｆｌａｇ＿ｓｅｔ＝３となる。これにより、図１１に示すように、ファイルの書込みが終了した（Ｄ）で示すセグメントを含め、３個前のセグメントまでの消去フラグ（ＥＲ＿Ｆ）を、セグメント制御部２０はセットする（「０」）。
【００６１】
図１３は、ファイル消去時の管理フラグの処理動作を説明するためのフローチャートの一例である。
ＣＰＵ１０からファイル消去命令を受けたセグメント制御部２０は、その消去命令に係る上記ＡＤＲ＿ＥＯＤ（消去されたファイルの最終アドレス）およびＡＤＲ＿ＳＯＤ（消去の開始アドレス）に基づいて、上述した式（２）の演算を行い（ステップＳＴ３０）、その演算結果であるＤｆｌａｇ＿ｓｅｔの分だけ上位のセグメント（オフセット）からＡＤＲ＿ＥＯＤ（消去されたファイルの最終アドレス）のセグメント（オフセット）までの消去フラグ（ＥＲ＿Ｆ）をセットする（ステップＳＴ３１）。
【００６２】
以上説明したように、本実施形態に係るメモリ管理装置は、メモリのファイル構造がＦＡＴである場合についても、ＦＡＴのアドレスを所定のオフセット毎に管理することで、擬似的に、第１の実施形態で説明したようなセグメント単位でのデータ書込み・消去の管理を行うことが可能となる。
したがって、前述した第１の実施形態に係るメモリ管理装置１と、同様の効果を得ることができる。
【図面の簡単な説明】
【００６３】
【図１】本実施形態におけるメモリ管理装置のブロック図の一例である。
【図２】管理フラグの動作を説明するための図である。
【図３】管理フラグの動作を説明するための図である。
【図４】管理フラグの動作を説明するための図である。
【図５】管理フラグの動作を説明するための図である。
【図６】最終アドレス書込み時の管理フラグの更新動作を説明するための図である。
【図７】最終アドレス書込み時の管理フラグの更新動作を説明するための図である。
【図８】最終アドレス書込み時の管理フラグの更新動作を説明するための図である。
【図９】ＦＡＴでの疑似セグメント管理を説明するための図である。
【図１０】ＦＡＴでの管理フラグの動作を説明するための図である。
【図１１】ＦＡＴでの管理フラグの動作を説明するための図である。
【図１２】ＦＡＴでのファイル書込み時の処理動作のフローチャートの一例である。
【図１３】ＦＡＴでのファイル消去時の処理動作のフローチャートの一例である。
【符号の説明】
【００６４】
１…メモリ管理装置、１０…ＣＰＵ、２０…セグメント制御部（ＳＥＧ＿Ｃ）、３０…メモリ制御部（ＭＥＭ＿Ｃ）、４０…ドライバ（ＤＲＶ）、５０…メモリ（ＭＥＭ）。
【図１】
2005135007.tif 000003
【図２】
2005135007.tif 000004
【図３】
2005135007.tif 000005
【図４】
2005135007.tif 000006
【図５】
2005135007.tif 000007
【図６】
2005135007.tif 000008
【図７】
2005135007.tif 000009
【図８】
2005135007.tif 000010
【図９】
2005135007.tif 000011
【図１０】
2005135007.tif 000012
【図１１】
2005135007.tif 000013
【図１２】
2005135007.tif 000014
【図１３】
2005135007.tif 000015