(57)【要約】【課題】不揮発性メモリの故障を防ぎ、これを用いる不揮発性記憶装置の寿命を伸ばす。【解決手段】不揮発性記憶装置として、複数の物理ブロックを有する不揮発性メモリと、コントローラとを備える。前記コントローラは、前記不揮発性メモリから前記物理ブロックを第１の予約ブロックとして複数選択し、入力された論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す第１のテーブルを前記第１の予約ブロックのうちのいずれか１つに格納させ、前記複数の第１の予約ブロックの物理アドレスを示す第２のテーブルを前記不揮発性メモリに格納させ、かつ、前記不揮発性メモリに書き込みを行う場合には、前記第１のテーブルを書き換え、前記第１の予約ブロックのうち、書き換え前の前記第１のテーブルが格納されていたものとは異なるものに、書き換え後の前記第１のテーブルを格納させる。【選択図】      図１
2004234473.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有する不揮発性メモリと、
コントローラとを備え、
前記コントローラは、
前記不揮発性メモリから前記物理ブロックを第１の予約ブロックとして複数選択し、入力された論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す第１のテーブルを前記第１の予約ブロックのうちのいずれか１つに格納させ、前記複数の第１の予約ブロックの物理アドレスを示す第２のテーブルを前記不揮発性メモリに格納させ、かつ、前記不揮発性メモリに書き込みを行う場合には、前記第１のテーブルを書き換え、前記第１の予約ブロックのうち、書き換え前の前記第１のテーブルが格納されていたものとは異なるものに、書き換え後の前記第１のテーブルを格納させるものである
不揮発性記憶装置。
【請求項２】
請求項１に記載の不揮発性記憶装置において、
前記コントローラは、
前記第１の予約ブロックのいずれにも書き込みが所定の回数以上行われると、前記不揮発性メモリから前記物理ブロックを複数選択して、新たな前記第１の予約ブロックとして用いるものである
ことを特徴とする不揮発性記憶装置。
【請求項３】
請求項２に記載の不揮発性記憶装置において、
前記コントローラは、
前記不揮発性メモリから前記物理ブロックを第２の予約ブロックとして複数選択し、前記第２のテーブルを前記第２の予約ブロックのうちのいずれか１つに格納させ、前記複数の第２の予約ブロックの物理アドレスを示す第３のテーブルを前記不揮発性メモリの所定のアドレスに格納させ、かつ、新たな前記第１の予約ブロックを用いる場合には、前記第２のテーブルを書き換え、前記第２の予約ブロックのうち、書き換え前の前記第２のテーブルが格納されていたものとは異なるものに、書き換え後の前記第２のテーブルを格納させるものである
ことを特徴とする不揮発性記憶装置。
【請求項４】
請求項３に記載の不揮発性記憶装置において、
前記コントローラは、
前記第２の予約ブロックのいずれにも書き込みが所定の回数以上行われると、前記不揮発性メモリから前記物理ブロックを複数選択して、新たな前記第２の予約ブロックとして用いるものである
ことを特徴とする不揮発性記憶装置。
【請求項５】
請求項３に記載の不揮発性記憶装置において、
前記コントローラは、
前記第３のテーブルに、前記第１及び第２のテーブルを加えて、前記不揮発性メモリの前記所定のアドレスに格納させるものである
ことを特徴とする不揮発性記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、書換え可能な不揮発性メモリを有する記憶装置に関し、特に不揮発性メモリへの書き込みを管理する技術に関する。
【０００２】
【従来の技術】
近年、コンピュータ等の電子機器で用いられるデータを記憶させておく外部記憶装置として、主としてカード状の記憶装置の使用が広がっている。このような記憶装置には、書換え可能な不揮発性半導体メモリが用いられている。
【０００３】
代表的な書き換え可能な不揮発性半導体メモリとして、フラッシュメモリがある。フラッシュメモリでは、格納されるデータはブロック（物理ブロック）単位で管理されており、データの消去はブロック単位で行われる。また各ブロックは複数のページを有している。ページは、フラッシュメモリにおけるデータの読み出し・書き込みの最小単位である。一般にフラッシュメモリにおいては、消去とは、全ビットを“１”とする処理を示し、書き込みとは、指定されたビットを“０”とする処理を示す。
【０００４】
各ページは、データを格納する領域とは別に冗長部を有しており、当該ページに割り当てられている論理アドレスに関した情報や、データの訂正符号がこの冗長部に格納される。各ページにはフラッシュメモリ内で一意な物理アドレスが割り当てられており、フラッシュメモリの制御装置は、フラッシュメモリにコマンドを送る際に、物理アドレスを指定することによって処理を制御する。
【０００５】
一方、コンピュータ等のホストから記憶装置に対しデータアクセスを行う際、ホストはセクタと呼ばれるデータサイズを単位としてデータを取り扱う。また、ホストは、フラッシュメモリ上で格納されるデータを、物理ブロックと同じサイズを有する論理ブロックを単位として管理する。論理ブロックは、一般に複数のセクタから構成されている。各セクタには論理的な順番である論理アドレスが付加されており、ホストは、記憶装置に論理アドレスを指定することによって処理を制御する。
【０００６】
図１４は、一般的な不揮発性記憶装置におけるデータ管理についての説明図である。図１４は、論理データ構成と物理データ構成との間の対応関係を示している。論理データ構成は、ホストから指定されるデータの構成であり、物理データ構成は、不揮発性メモリに格納されているデータの構成である。
【０００７】
書き込み済みの論理ブロックは、フラッシュメモリ内の物理ブロックと１対１に対応付けられ、管理されている（未書き込みの論理ブロックには、対応する物理ブロックは存在しない）。Ｑ＋１個（Ｑは０以上の整数）の論理ブロックが１つの論理セグメントを構成する。また、Ｐ＋１個（Ｐは０以上の整数）の物理ブロックが１つの物理セグメントを構成する。
【０００８】
ここで、各論理セグメントはそれぞれ、対応する１つの物理セグメントに割り当てられている。ある論理セグメントを構成する論理データは、特定の物理セグメントとして管理される領域に格納される（物理ブロックには不良ブロックも存在するため、一般にＱ＜Ｐである）。したがって、フラッシュメモリが格納する、論理ブロックと物理ブロックとの間の対応情報であるアドレス変換情報（以下では、ＡＴと称する。論物変換情報とも呼ばれる。）は、物理セグメント単位で管理されることになる。
【０００９】
図１５は、従来の不揮発性記憶装置の構成の例を示すブロック図である。図１５の不揮発性記憶装置９００は、ホストインタフェース９１０と、コントローラ９２０と、揮発性メモリであるＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）９３０と、不揮発性メモリ９４０とを備えている。ホストインタフェース９１０は、ホスト９０２からコマンド等を受け、コントローラ９２０に伝える。コントローラ９２０は、ホストインタフェース９１０、ＲＡＭ９３０及び不揮発性メモリ９４０の間の調停、並びにこれらに対する制御を行う。
【００１０】
不揮発性メモリ９４０は、書き換え可能な不揮発性メモリであって、管理領域９４２とデータ領域９４４とを有している。管理領域９４２にはアドレス変換情報が格納され、データ領域９４４にはホスト９０２が読み書きを行うデータが格納される。
【００１１】
管理領域９４２は、ＡＴＩＰ９５２と、ＡＴＩ９５４と、ＡＴ９５６とを有している。データ領域９４４は、４個の物理セグメントを有している。ＡＴ９５６には、各物理セグメントに対応するテーブルである。ＡＴＩ９５４は、各テーブルの物理アドレスを格納する。
【００１２】
ＲＡＭ９３０は、ＡＴＩ９５４を読み出した後にこれを格納するためのＡＴＩＲＡＭ９３２と、ＡＴ９５６のテーブルのいずれか１つを読み出した後にこれを格納するためのＡＴＲＡＭ９３４とを有している。
【００１３】
図１６は、図１５の不揮発性メモリ９４０の管理領域９４２におけるデータ構造を示す説明図である。ＡＴＩＰ９５２は、特定ブロック（例えば先頭ブロック）に割り当てられており、ＡＴＩ９５４の物理アドレスを格納する。ＡＴＩ９５４は、ＡＴ９５６の各テーブル（ＡＴ０，ＡＴ１，ＡＴ２，ＡＴ３）の物理アドレスを格納する。テーブルＡＴ０からＡＴ３は、４個の物理セグメントのそれぞれのアドレス変換情報を示している。
【００１４】
図１７は、図１５の不揮発性記憶装置の書き込み時における処理の例を示すフローチャートである。
【００１５】
不揮発性記憶装置９００にホスト９０２からデータの書き込み命令が送られると、ステップＳ９０２において、不揮発性記憶装置９００は、ホスト９０２から指定された書き込み対象の論理アドレスから、書き込み対象の物理ブロックが割り当てられている物理セグメントを求める。
【００１６】
ステップＳ９０４では、ステップＳ９０２で求められた物理セグメントのＡＴデータが既にＡＴＲＡＭ９３４に読み出されているか否かを判断する。ＡＴデータが読み出されていない場合には、ステップＳ９０６に進む。既にＡＴデータが読み込まれている場合には、ステップＳ９０８に進む。
【００１７】
ステップＳ９０６では、ＡＴＩＲＡＭ９３２を参照して、求められた物理セグメントに対応するＡＴデータをＡＴＲＡＭ９３４に読み出す。ステップＳ９０８では、ＡＴＲＡＭ９３４を参照して、ホスト９０２から指定された論理アドレスに対応する物理ブロックを求める。
【００１８】
ステップＳ９１０では、対応する物理ブロックが存在するか否かを判断する。対応物理ブロックが存在する場合には、ステップＳ９１６に進む。対応物理ブロックが存在しない場合には、対応物理ブロックを指定しなければならないので、ステップＳ９１２に進む。
【００１９】
ステップＳ９１２では、ＡＴＲＡＭ９３４を参照して、当該物理セグメント内を探索して、まだ論理ブロックに割り当てられていない物理ブロックを選択する。ステップＳ９１４では、ＡＴＲＡＭ９３４と、ＡＴデータを書き換えることによって、選択された物理ブロックを指定された論理ブロックに対応付ける。以上の処理により、ホスト９０２から指定された論理アドレスに対応する物理ブロックが割り当てられる。
【００２０】
続いて、割り当てられた物理ブロックへデータを書き込む。不揮発性メモリは、物理ブロック単位でデータの消去を行うので、既にデータが書き込まれたページにデータを上書きする際には、まずブロック全体のデータを消去する必要がある。このため、ステップＳ９１６では、上書き対象の物理ブロック内のデータであって更新されない領域のデータを読み出して、一時的にＲＡＭ９３０内に待避させる。このようなデータを、再度書き込む必要があるからである。
【００２１】
ステップＳ９１８では、上書き対象の物理ブロックのデータを消去後、ステップＳ９１６において待避させたデータと、ホスト９０２から送られたデータとを併せて書き込む。ステップＳ９２０では、ステップＳ９１８における消去及び書き込みが正常に終了したか否かを判断する。正常に終了した場合には書き込み処理を終了する。正常に終了しなかった場合には、ステップＳ９２２に進む。
【００２２】
ステップＳ９２０で正常に終了しなかったと判断された場合には、その物理ブロックは不良ブロックになったということであるので、指定された論理アドレスに対応する物理ブロックを変更する必要がある。そこで、ステップＳ９２２では、ステップＳ９１２と同様に、当該物理セグメント内を探索して、まだ論理ブロックに割り当てられていない物理ブロックを選択し、ステップＳ９２４では、ステップＳ９１４と同様に、選択された物理ブロックを論理ブロックと対応付けてＡＴＲＡＭ９３４とＡＴデータとを更新する。更に、ステップＳ９２６では、ステップＳ９１６及びＳ９１８と同様に、データの待避、消去、及び書き込みを行う。その後、再びステップＳ９２０の処理を行う。
【００２３】
これに関連する技術が、例えば特許文献１に開示されている。
【００２４】
【特許文献１】
特開２００１−１４２７７４号公報
【００２５】
【発明が解決しようとする課題】
フラッシュメモリの特徴として、各ブロックの書き込み頻度にバラつきがあると、書き込み頻度の高いブロックから破壊されていく可能性が高まるということがある。このため、フラッシュメモリを使用する際には、各ブロックの書き込み／消去頻度ができるだけ均等となるようにデータの書き込みを行うとともに、破壊されたブロックに対して書き込み・消去等のアクセスを行わないように管理する必要がある。
【００２６】
また、書き込み・消去に要する処理時間が長いので、特に電源が不安定な携帯機器で使用される可能性の高いメモリカードのような不揮発性記憶装置では、書き込みや消去の処理中に電源遮断が生じた場合であってもフラッシュメモリ内のデータの整合性を確保するための対策が必要である。
【００２７】
しかし、従来の技術においては、例えばＦＡＴ（ｆｉｌｅ  ａｌｌｏｃａｔｉｏｎ  ｔａｂｌｅ）情報が書き込まれる論理ブロックのように、特定の論理ブロックが常に同一の物理ブロックにのみ書き込まれることがあった。このため、例えばＦＡＴ情報の更新等のように、同一論理ブロックを何度も書き換えるような処理をホストが行った場合には、同一物理セグメント内に未使用の物理ブロックがあるにも関わらず、特定の物理ブロックの書き込み回数のみが増加し、フラッシュメモリの寿命を縮めるという問題があった。
【００２８】
また、従来は、データの書き換え（特にＡＴデータ）の際にホストからの電源電圧の供給が遮断された場合には、不揮発性メモリ内部で格納されているデータの論理的な不整合が生じることになり、ホストにデータが正しく読み出せなかったり、その後のアクセスによりデータの破壊が生じたりする可能性が高いという問題があった。
【００２９】
本発明は、不揮発性メモリの故障を防ぎ、これを用いる不揮発性記憶装置の寿命を伸ばすことを目的とする。また、不揮発性記憶装置において、供給電圧が低下しても、格納されている論理データの破壊が生じないようにすることを目的とする。
【００３０】
【課題を解決するための手段】
前記課題を解決するため、請求項１の発明が講じた手段は、不揮発性記憶装置として、複数の物理ブロックを有する不揮発性メモリと、コントローラとを備え、前記コントローラは、前記不揮発性メモリから前記物理ブロックを第１の予約ブロックとして複数選択し、入力された論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す第１のテーブルを前記第１の予約ブロックのうちのいずれか１つに格納させ、前記複数の第１の予約ブロックの物理アドレスを示す第２のテーブルを前記不揮発性メモリに格納させ、かつ、前記不揮発性メモリに書き込みを行う場合には、前記第１のテーブルを書き換え、前記第１の予約ブロックのうち、書き換え前の前記第１のテーブルが格納されていたものとは異なるものに、書き換え後の前記第１のテーブルを格納させるものである。
【００３１】
請求項１の発明によると、書き換えの頻度が高い第１のテーブルを、更新する毎に同一の物理ブロックに書き込み続けることがないので、不揮発性メモリの各物理ブロックの書き込み頻度を均等に近づけることができる。このため、不揮発性記憶装置の故障確率を小さくすることができる。
【００３２】
また、請求項２の発明では、請求項１に記載の不揮発性記憶装置において、前記コントローラは、前記第１の予約ブロックのいずれにも書き込みが所定の回数以上行われると、前記不揮発性メモリから前記物理ブロックを複数選択して、新たな前記第１の予約ブロックとして用いるものである。
【００３３】
請求項２の発明によると、第１の予約ブロックを所定の回数ずつ使った後に、新たな第１の予約ブロックを用いるので、第１の予約ブロックの書き込み頻度をほぼ等しくし、第２のテーブルの書き込み頻度を低くすることができる。
【００３４】
また、請求項３の発明では、請求項２に記載の不揮発性記憶装置において、前記コントローラは、前記不揮発性メモリから前記物理ブロックを第２の予約ブロックとして複数選択し、前記第２のテーブルを前記第２の予約ブロックのうちのいずれか１つに格納させ、前記複数の第２の予約ブロックの物理アドレスを示す第３のテーブルを前記不揮発性メモリの所定のアドレスに格納させ、かつ、新たな前記第１の予約ブロックを用いる場合には、前記第２のテーブルを書き換え、前記第２の予約ブロックのうち、書き換え前の前記第２のテーブルが格納されていたものとは異なるものに、書き換え後の前記第２のテーブルを格納させるものである。
【００３５】
請求項３の発明によると、第２のテーブルを、更新する毎に同一の物理ブロックに書き込み続けることがないので、不揮発性メモリの各物理ブロックの書き込み頻度をより均等に近づけることができる。
【００３６】
また、請求項４の発明では、請求項３に記載の不揮発性記憶装置において、前記コントローラは、前記第２の予約ブロックのいずれにも書き込みが所定の回数以上行われると、前記不揮発性メモリから前記物理ブロックを複数選択して、新たな前記第２の予約ブロックとして用いるものである。
【００３７】
請求項４の発明によると、第２の予約ブロックを所定の回数ずつ使った後に、新たな第２の予約ブロックを用いるので、第２の予約ブロックの書き込み頻度をほぼ等しくし、所定のアドレスに格納される第３のテーブルの書き込み頻度を低くすることができる。
【００３８】
また、請求項５の発明では、請求項３に記載の不揮発性記憶装置において、前記コントローラは、前記第３のテーブルに、前記第１及び第２のテーブルを加えて、前記不揮発性メモリの前記所定のアドレスに格納させるものである。
【００３９】
請求項５の発明によると、更新頻度は少ないが重要なデータを格納した物理ブロックに、第１のテーブルの記述に基づいて直接アクセスすることができるので、初期化時等に簡便な処理でデータを取得することが可能となり、初期化時間の短縮等を行うことができる。
【００４０】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００４１】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る不揮発性記憶装置のブロック図である。図１の不揮発性記憶装置１００は、ホストインタフェース１０と、コントローラ２０と、ＲＡＭ３０と、不揮発性半導体メモリ４０とを備えている。ホスト２は、例えばコンピュータやオーディオプレーヤである。不揮発性記憶装置１００は、例えばメモリカードである。
【００４２】
ホストインタフェース１０は、ホスト２からコマンドを受け取り、これをレジスタ情報に変換する等の必要な処理を行い、コントローラ２０に出力する。また、ホストインタフェース１０は、ホスト２が出力した不揮発性メモリ４０への書き込みデータをコントローラ２０に出力し、不揮発性メモリ４０からの読み出しデータをホスト２に出力する。コントローラ２０は、ホストインタフェース１０、ＲＡＭ３０、及び不揮発性メモリ４０の動作を制御する。
【００４３】
不揮発性メモリ４０は、書き換え可能なものであって、例えばフラッシュメモリである。不揮発性メモリ４０は、ホスト２から送られたデータを格納するデータ領域４４と、データ領域４４に格納されたデータの論理的なつながりを管理するためのデータを格納する管理領域４２とを有している。
【００４４】
データ領域４４は、Ｎ＋１個（Ｎは０以上の整数）の物理セグメントを有している。各物理セグメントは、ホストから送られたデータを格納する物理ブロックと、複数のＡＴ予約ブロック（第１の予約ブロック）とを有する。ＡＴ予約ブロックは、その物理セグメント内の物理ブロックと論理ブロックとの対応関係を示す、第１のテーブルとしてのアドレス変換テーブル（アロケーションテーブルともいう。以下では、ＡＴと称する。）を格納するために予約された物理ブロックである。ＡＴ予約ブロックのうちの１つが、現在有効なＡＴを保持するために用いられる。
【００４５】
また、管理領域４２は、各物理セグメントのＡＴ予約ブロックのアドレスを示す第２のテーブルとしてのＡＴＩ５４を格納する物理ブロックと、この物理ブロックの物理アドレスを示すポインタをＡＴＩＰ５２として格納する物理ブロックとを有する。特に、ＡＴＩＰ５２を格納する物理ブロックは、特定の物理アドレスを有しており、例えば先頭物理ブロックである。ＡＴＩ５４は、一定のアドレスに格納されていてもよいし、格納されるアドレスを管理領域４２内において必要に応じて変えるようにしてもよい。
【００４６】
ＲＡＭ３０は、ＡＴＩ５４のデータを格納するＡＴＩＲＡＭ３２と、現在有効なＡＴを格納するＡＴＲＡＭ３４と、現在有効なＡＴを持つ物理ブロックを示すポインタを示すデータを格納するＡＴＩ＿Ｐｏｉｎｔ３６とを有する。
【００４７】
コントローラ２０は、不揮発性記憶装置１００の初期化時において、ＡＴＩ５４のＡＴＩＲＡＭ３２への読み出し、ＡＴ予約ブロックのうち有効なＡＴを持つ物理ブロックの判断、及び、有効と判断された物理ブロックを示すポインタを示すデータのＡＴＩ＿Ｐｏｉｎｔ３６への読み出しを行う。
【００４８】
図２は、図１の不揮発性メモリ４０が格納するデータの構成についての説明図である。ＡＴＩＰ５２は、ＡＴＩ５４の物理アドレスを有している。各物理セグメントでは、その物理セグメントのＡＴを格納するためのブロックとして、Ｍ＋１個（Ｍは自然数）の物理ブロックがＡＴ予約ブロックとして予約されている。図２の場合には、ＡＴ７０に示されているように、物理セグメント０においては物理ブロック１，物理ブロック３等が、それぞれＡＴ予約ブロック８２ａ，８２ｂ等として予約されている。予約は、例えば出荷時に行われる。予約されたブロックに対しては、論理ブロックとの対応付けは行われない。ＡＴ予約ブロックのうちのいずれかに、現在有効なＡＴ７０が格納される。
【００４９】
ＡＴＩ５４は、各物理セグメントに対してＭ＋１個のＡＴ予約ブロックの物理アドレスを格納している。図２では、ＡＴ予約ブロック８２ａを示すためのポインタと、このポインタが示す物理アドレスとの関係等が、ＡＴＩ５４に示されている。
【００５０】
図３は、図１の不揮発性記憶装置の書き込み時における処理の例を示すフローチャートである。図３の各ステップについて説明する。
【００５１】
ステップＳ２において、コントローラ２０は、ホスト２からデータの書き込み命令を受けると、ホスト２によって指定された論理アドレスから、データを書き込む物理セグメントを求める。
【００５２】
ステップＳ４では、コントローラ２０は、ステップＳ２で求めた物理セグメントのＡＴがＡＴＲＡＭ３４に読み出し済みであるか否かを判断する。読み出し済みである場合には、ステップＳ８に進み、その他の場合には、ステップＳ６に進む。
【００５３】
ステップＳ６では、コントローラ２０は、ＡＴＩ＿Ｐｏｉｎｔ３６が格納する、現在有効なＡＴを示すポインタについてのデータを用いて、ＡＴＩＲＡＭ３２が格納するＡＴＩ５４のデータから当該物理セグメントのＡＴが格納された物理ブロックの物理アドレスを求め、現在有効なＡＴをＡＴＲＡＭ３４に読み出す。
【００５４】
その後、ステップＳ８では、コントローラ２０は、ＡＴＲＡＭ３４を参照して、当該物理セグメント内を探索し、ＡＴ予約ブロック以外であってまだ論理ブロックとは対応付けられていない未割り当て物理ブロックを選択する。ここで、コントローラ２０は、未割り当て物理ブロックの中から、例えば乱数を用いてランダムに物理ブロックを選択する。また、各物理ブロックに、それまでにその物理ブロックに対して行われた書き込みの回数が記録されるようにしておき、コントローラ２０は、未割り当て物理ブロックの中で、特に書き込みが行われた回数が少ない物理ブロックを求めるようにしてもよい。
【００５５】
ステップＳ１０では、コントローラ２０は、ホスト２から送られたデータを選択された物理ブロックに書き込む。
【００５６】
ステップＳ１２では、コントローラ２０は、書き込みが正常に終了したか否かを判断する。書き込みが正常に終了した場合には、ステップＳ１４に進み、正常に終了しなかった場合には、ステップＳ８に戻り、再び未割り当て物理ブロックを探す。
【００５７】
ステップＳ１４では、コントローラ２０は、ＡＴＲＡＭ３４を参照して、ホスト２から指定された論理アドレスに対応する物理ブロックを求める。
【００５８】
ステップＳ１６では、コントローラ２０は、対応する物理ブロックが存在するか否かを判断する。対応する物理ブロックが存在する場合には、ステップＳ１８に進み、存在しない場合には、ステップＳ２２に進む。
【００５９】
ステップＳ１８では、コントローラ２０は、ホスト２からデータが送られておらず、書き込みを行っていない領域に対応するデータを、ステップＳ１４で求められた対応する物理ブロックから読み出して、ステップＳ８で選択された物理ブロックに書き込む。
【００６０】
ステップＳ２０では、コントローラ２０は、ステップＳ１８での書き込みが正常に終了したか否かを判断する。正常に終了した場合には、ステップＳ２２に進み、正常に終了しなかった場合には、ステップＳ８に戻る。以上で、ホスト２から送られたデータを不揮発性メモリ４０に格納する処理が終了する。続いて当該物理セグメントのＡＴ情報の更新を行う。
【００６１】
ステップＳ２２では、コントローラ２０は、選択された物理ブロックをホスト２から指定された論理アドレス示された論理ブロックに対応するように、ＡＴＲＡＭ３４のデータを更新する。
【００６２】
ステップＳ３０では、コントローラ２０は、ＡＴの更新を行い、書き込み処理を終了する。
【００６３】
図４は、図３のＡＴを更新するステップＳ３０における処理の例を示すフローチャートである。
【００６４】
まず、ステップＳ３２では、コントローラ２０は、更新可能なＡＴ予約ブロックが存在するか否かを判断する。すなわち、コントローラ２０は、ＡＴＩ＿Ｐｏｉｎｔ３６のデータに基づき、全てのＡＴ予約ブロックに所定の回数（例えば１回）以上の書き込みが行われていることがわかった場合には、更新可能なブロックは存在しないと判断し、ステップＳ３４に進む。その他の場合には、更新可能なブロックは存在すると判断し、ステップＳ４０に進む。
【００６５】
所定回数以上の書き込みが行われていた場合、この物理セグメントの全体の書き込み頻度を均等に近づけるために、新たにＡＴを格納するためのＡＴ予約ブロックを設定する。そこで、ステップＳ３４では、コントローラ２０は、この物理セグメント内を探索して、ＡＴ予約ブロック以外であり、かつ、まだ論理ブロックと対応付けられていない未割り当て物理ブロックを選択する。ステップＳ３４における処理は、物理ブロックをＭ＋１個選択する点の他は、ステップＳ８における処理と同様である。選択された未割り当て物理ブロックは、新たなＡＴ予約ブロックとして扱われる。
【００６６】
ステップＳ３６では、コントローラ２０は、選択されたＡＴ予約ブロックの物理アドレスでＡＴＩＲＡＭ３２とＡＴＲＡＭ３４とを更新する。
【００６７】
ステップＳ３８では、コントローラ２０は、ＡＴＩＲＡＭ３２のデータを管理領域４２内にＡＴＩ５４のデータとして書き込む。
【００６８】
その後、ステップＳ４０では、コントローラ２０は、この物理ブロックについてのＡＴＩ５４のテーブルにおいて、ＡＴＩ＿Ｐｏｉｎｔ３６が、現在示すポインタの次のポインタを示すように、そのデータを更新する。その後、ＡＴＩＲＡＭ３２及びＡＴＩ＿Ｐｏｉｎｔ３６のデータに基づいて、更新可能なＡＴ予約ブロックに、ＡＴＲＡＭ３４のデータを書き込む。
【００６９】
ステップＳ４２では、コントローラ２０は、ステップＳ４０の処理が正常終了したか否かを判断する。正常終了した場合は、ＡＴ更新処理を終了する。正常終了しなかった場合は、ステップＳ３２に戻る。
【００７０】
このように、第１の実施形態の不揮発性記憶装置によると、不揮発性メモリにおいて、ＡＴのデータを書き込むための予約ブロックを複数用いる。また、予約ブロックとして、書き込み頻度の少ない物理ブロックを選択する。書き換え頻度が大きいＡＴのデータを、特定の物理ブロックにのみ書き込み続けることがないので、不揮発性メモリの各物理ブロックの書き込み頻度を均等に近づけることが可能となる。そして、不揮発性記憶装置の故障確率を小さくし、寿命を延ばすことができる。
【００７１】
また、第１の実施形態の不揮発性記憶装置は、ホストから物理ブロックへのデータの書き込み時には、書き込みが正常に終了した後に物理ブロックと論理ブロックとの間のアドレス変換テーブルを更新する。このため、書き込み処理中に供給電圧が低下したり、電源が遮断されても書き込み前のデータは有効であり、データの喪失を防ぐことができる。したがって、この不揮発性記憶装置を用いて安定したシステムを構築することができる。
【００７２】
（第２の実施形態）
第２の実施形態では、ＡＴのみではなく、ＡＴＩをも複数の予約ブロックのうちのいずれかに格納させるようにした場合について説明する。
【００７３】
図５は、本発明の第２の実施形態に係る不揮発性記憶装置のブロック図である。図５の不揮発性記憶装置２００は、ホストインタフェース２１０と、コントローラ２２０と、ＲＡＭ２３０と、不揮発性半導体メモリ２４０とを備えている。図５において、ホストインタフェース２１０は、図１のホストインタフェース１０と同様のものである。
【００７４】
不揮発性メモリ２４０は、図１の不揮発性メモリ４０とほぼ同様のものであって、管理領域２４２と、データ領域２４４とを有している。
【００７５】
データ領域２４４は、Ｎ＋１個の物理セグメントを有している。各物理セグメントは、ホストから送られたデータを格納する物理ブロックと、その物理セグメント内の物理ブロックと論理ブロックとの対応関係を示すＡＴを格納するために予約された複数のＡＴ予約ブロックと、その物理セグメントについてのＡＴ予約ブロックのアドレスを示すテーブルであるＡＴＩを格納するために予約された複数のＡＴＩ予約ブロック（第２の予約ブロック）とを有する。第１の実施形態の場合と同様に、ＡＴ予約ブロックのうちの１つが、現在有効なＡＴを保持するために用いられる。更に、ＡＴＩ予約ブロックのうちの１つが、現在有効なＡＴＩを保持するために用いられる。
【００７６】
また、管理領域２４２は、各物理セグメントのＡＴＩ予約ブロックのアドレスを示す第３のテーブルとしてのＡＴＩＰ２５２を格納する物理ブロックを有する。ＡＴＩＰ２５２を格納する物理ブロックは、特定の物理アドレスを有しており、例えば先頭物理ブロックである。すなわち、ＡＴＩＰ２５２は、一定のアドレスに格納されている。
【００７７】
ＲＡＭ２３０は、現在有効なＡＴＩを格納するＡＴＩＲＡＭ２３２と、現在有効なＡＴを格納するＡＴＲＡＭ２３４と、現在有効なＡＴを持つ物理ブロックを示すポインタを示すデータを格納するＡＴＩ＿Ｐｏｉｎｔ２３６と、現在有効なＡＴＩを持つ物理ブロックを示すポインタを示すデータを格納するＡＴＩＰ＿Ｐｏｉｎｔ２３８とを有する。
【００７８】
コントローラ２２０は、不揮発性記憶装置２００の初期化時において、ＡＴＩのＡＴＩＲＡＭ２３２への読み出し、ＡＴ予約ブロックのうち有効なＡＴを持つ物理ブロックの判断、有効と判断された物理ブロックを示すポインタを示すデータのＡＴＩ＿Ｐｏｉｎｔ２３６への読み出し、ＡＴＩ予約ブロックのうち有効なＡＴＩを持つ物理ブロックの判断、及びこの際に有効と判断された物理ブロックを示すポインタを示すデータのＡＴＩＰ＿Ｐｏｉｎｔ２３８への読み出しを行う。
【００７９】
図６は、図５の不揮発性メモリ２４０が格納するデータの構成についての説明図である。ＡＴＩＰ２５２は、各物理セグメントのＡＴＩ予約ブロックのアドレスを示すテーブルを有している。
【００８０】
各物理セグメントでは、その物理セグメントのＡＴを格納するためのブロックとして、Ｍ＋１個の物理ブロックがＡＴ予約ブロックとして予約され、その物理セグメントのＡＴＩを格納するためのブロックとして、Ｌ＋１個（Ｌは自然数）の物理ブロックがＡＴＩ予約ブロックとして予約されている。
【００８１】
図６の場合には、テーブル２７０に示されているように、物理セグメント０においては物理ブロック１，物理ブロック３等が、それぞれＡＴ予約ブロック２８２ａ，２８２ｂ等として予約されている。更に、この物理セグメントにおいては物理ブロック２等が、ＡＴＩ予約ブロック２８４ａ等として予約されている。予約は、例えば出荷時に行われる。予約されたブロックに対しては、論理ブロックとの対応付けは行われない。
【００８２】
各ＡＴＩは、各物理セグメントについて、Ｍ＋１個のＡＴ予約ブロックの物理アドレスを格納している。ＡＴＩＰ２５２は、Ｎ＋１個の物理セグメントのそれぞれについてＬ＋１個のＡＴＩ予約ブロックの物理アドレスを格納している。図６では、ＡＴＩ予約ブロック２８４ａを示すためのポインタと、このポインタが示す物理アドレスとの関係等が、ＡＴＩＰ２５２に示されている。また、ＡＴ予約ブロック２８２ａ，２８２ｂを示すためのポインタと、これらのポインタがそれぞれ示す物理アドレスとの関係等が、ＡＴＩ予約ブロック２８４ａに格納されたＡＴＩ２５４に示されている。
【００８３】
図５の不揮発性記憶装置の書き込み時における処理について説明する。主な処理の流れは、図３を参照して説明したものと同様であるが、ＡＴ更新を行うステップにおける処理が異なる。
【００８４】
図７は、図５の不揮発性記憶装置の書き込み時におけるＡＴを更新するステップの処理の例を示すフローチャートである。図７において、ステップＳ３２，Ｓ３４，Ｓ３６，Ｓ４０，Ｓ４２の処理は、図４を参照して説明したものと同じであるので、その説明を省略する。ステップＳ１５０では、コントローラ２２０は、データ領域２４４に格納されたＡＴＩの更新を行う。
【００８５】
図８は、図７のＡＴＩの更新を行うステップＳ１５０における処理の例を示すフローチャートである。
【００８６】
ステップＳ１５２では、ステップＳ３２と同様に、コントローラ２２０は、更新可能なＡＴＩ予約ブロックが存在するか否かを判断する。すなわち、コントローラ２２０は、ＡＴＩＰ＿Ｐｏｉｎｔ２３８のデータに基づき、全てのＡＴＩ予約ブロックに所定の回数（例えば１回）以上の書き込みが行われていれば、更新可能なブロックは存在しないと判断し、ステップＳ１５４に進む。そうでなければ、更新可能なブロックは存在すると判断し、ステップＳ１６０に進む。
【００８７】
所定回数以上の書き込みが行われていた場合、この物理セグメントの全体の書き込み頻度を均等に近づけるために、新たにＡＴを格納するためのＡＴ予約ブロックを設定する。そこで、ステップＳ１５４では、コントローラ２２０は、この物理セグメント内において、ＡＴ予約ブロック及びＡＴＩ予約ブロック以外であり、かつ、まだ論理ブロックと対応付けられていない未割り当て物理ブロックを選択する。ステップＳ１５４における処理は、物理ブロックをＬ＋１個選択する点の他は、ステップＳ３４における処理と同様である。選択した未割り当て物理ブロックは、新たなＡＴＩ予約ブロックとして扱われる。
【００８８】
ステップＳ１５６では、コントローラ２２０は、選択されたＡＴＩ予約ブロックの物理アドレスでＡＴＲＡＭ２３４を更新する。
【００８９】
ステップＳ１５８では、コントローラ２２０は、管理領域２４２内のＡＴＩＰ２５２を更新する。
【００９０】
その後、ステップＳ１６０では、コントローラ２２０は、ＡＴＩＰ＿Ｐｏｉｎｔ２３８のデータに基づいて、更新すべきＡＴＩ予約ブロックに、ＡＴＩＲＡＭ２３２のデータを書き込む。
【００９１】
ステップＳ１６２では、コントローラ２２０は、ステップＳ１６０の処理が正常終了したか否かを判断する。正常終了した場合は、ＡＴＩ更新処理を終了する。正常終了しなかった場合は、ステップＳ１５２に戻る。
【００９２】
このように、書き込まれる物理ブロックが固定されたＡＴＩＰ２５２が書き換えられるのは、全てのＡＴＩ予約ブロックを少なくとも１回ずつ使い終える毎であり、ＡＴＩＰ２５２の書き換え頻度を大幅に低減させることができる。
【００９３】
第２の実施形態の不揮発性記憶装置では、不揮発性メモリにおいて、ＡＴ予約ブロックだけではなく、ＡＴＩのデータを書き込むためのＡＴＩ予約ブロックを複数用いる。また、予約ブロックとして、書き込み頻度の少ない物理ブロックを選択する。書き換え頻度が大きいＡＴ及びＡＴＩのデータを、それぞれ特定の物理ブロックにのみ書き込み続けることがないので、不揮発性メモリの各物理ブロックの書き込み頻度をより均等に近づけることが可能となる。そして、不揮発性記憶装置の故障確率を小さくし、寿命を延ばすことができる。
【００９４】
（第３の実施形態）
第３の実施形態では、複数の種類のポインタを用いる場合について説明する。
【００９５】
図９は、本発明の第３の実施形態に係る不揮発性記憶装置のブロック図である。図９の不揮発性記憶装置３００は、ホストインタフェース３１０と、コントローラ３２０と、ＲＡＭ３３０と、不揮発性半導体メモリ３４０とを備えている。図９において、ホストインタフェース３１０は、図１のホストインタフェース１０と同様のものである。ＲＡＭ３３０は、図５のＲＡＭ２３０と同様のものである。
【００９６】
不揮発性メモリ３４０は、図１の不揮発性メモリ４０とほぼ同様のものであって、管理領域３４２と、データ領域３４４とを有している。データ領域３４４は、図５のデータ領域２４４と同様に、複数のＡＴ予約ブロックと、複数のＡＴＩ予約ブロックとを有している。
【００９７】
管理領域３４２は、ＡＴＩＰ３５２を格納する物理ブロックを有している。この物理ブロックは、特定の物理アドレスを有しており、例えば先頭物理ブロックである。
【００９８】
コントローラ３２０は、不揮発性記憶装置３００の初期化時において、図５のコントローラ２２０と同様に、ＡＴＩのＡＴＩＲＡＭ３３２への読み出し、ＡＴ予約ブロックのうち有効なＡＴを持つ物理ブロックの判断、有効と判断された物理ブロックを示すポインタを示すデータのＡＴＩ＿Ｐｏｉｎｔ３３６への読み出し、ＡＴＩ予約ブロックのうち有効なＡＴＩを持つ物理ブロックの判断、及びこの際に有効と判断された物理ブロックを示すポインタを示すデータのＡＴＩＰ＿Ｐｏｉｎｔ３３８への読み出しを行う。
【００９９】
図１０は、図９の不揮発性メモリ３４０が格納するデータの構成についての説明図である。ＡＴＩＰ３５２は、各物理セグメントのＡＴＩ予約ブロックのアドレスを示すテーブルと、物理セグメントについてのＡＴ予約ブロックのアドレスを示すテーブルであるＡＴＩと、物理セグメント内の物理ブロックと論理ブロックとの対応関係を示すテーブルであるＡＴとを有している。
【０１００】
各物理セグメントでは、その物理セグメントのＡＴを格納するためのブロックとして、Ｍ＋１個の物理ブロックがＡＴ予約ブロックとして予約され、その物理セグメントのＡＴＩを格納するためのブロックとして、Ｌ＋１個の物理ブロックがＡＴＩ予約ブロックとして予約されている。
【０１０１】
図１０の場合には、テーブル３７１に示されているように、物理セグメント１においては物理ブロック１，物理ブロック３等が、それぞれＡＴ予約ブロック３８２ａ，３８２ｂ等として予約されている。更に、この物理セグメントにおいては物理ブロック２等が、ＡＴＩ予約ブロック３８４ａ等として予約されている。予約は、例えば出荷時に行われる。予約されたブロックに対しては、論理ブロックとの対応付けは行われない。
【０１０２】
各物理セグメントのＡＴＩは、Ｍ＋１個のＡＴ予約ブロックの物理アドレスを格納している。図１０の場合、ＡＴＩＰ３５２は、Ｎ＋１個の物理セグメントのそれぞれについてＬ＋１個、すなわち、（Ｎ＋１）（Ｌ＋１）個のＡＴＩ予約ブロックの物理アドレスと、１個の物理セグメントについてのＭ＋１個のＡＴ予約ブロックの物理アドレスと、１個の論理ブロックに対応した物理アドレスとを格納している。図１０では、ＡＴＩ予約ブロック３８４ａにはＡＴＩ３５４が格納されている。
【０１０３】
ＡＴＩＰ３５２は３種類のテーブルを有している。すなわち、物理ブロックと論理ブロックとの対応関係を示す第１のテーブルにおいては、論理ブロックと物理ブロックとが直接対応付けられており、論理ブロックそのものを０段ポインタと称することとする。ＡＴ予約ブロックのアドレスを示す第２のテーブルにおいては、ポインタとＡＴ予約ブロックのアドレスとが対応付けられており、このポインタを１段ポインタと称することとする。ＡＴＩ予約ブロックのアドレスを示す第３のテーブルにおいては、ポインタとＡＴＩ予約ブロックのアドレスとが対応付けられており、このポインタを２段ポインタと称することとする。
【０１０４】
通常のデータを格納する論理ブロックに対応した物理ブロックにアクセスするためには、２段ポインタが用いられる。例えば、図１０の場合に、物理セグメント１の物理ブロックにアクセスする際には、ＡＴＩＰ３５２において、例えばＡＴＩ１＿０と表記された２段ポインタに対応した物理ブロック２を参照してＡＴＩを読み出す。このＡＴＩにおいて、例えばＡＴ１＿０と表記されたポインタに対応した物理ブロック１を参照して、これに格納されたＡＴ３７１を読み出す。このＡＴ３７１は、物理セグメント１の現在有効なＡＴであるので、これを参照すると、論理ブロックに対応した物理ブロックにアクセスすることができる。
【０１０５】
図１１は、図１０のデータを用いた１段ポインタによるアクセスについての説明図である。デバイス情報のように、比較的データの更新回数が少ない論理ブロックにアクセスするために、１段ポインタが用いられる。
【０１０６】
例えば、図１１の場合に、物理セグメント０の物理ブロックにアクセスする際には、ＡＴＩＰ３５２において、例えばＡＴ０＿０と表記された１段ポインタに対応した物理ブロック１を参照して、これに格納されたＡＴ３７０を読み出す。このＡＴ３７０は、物理セグメント０の現在有効なＡＴであるので、これを参照すると、論理ブロックに対応した物理ブロックにアクセスすることができる。
【０１０７】
図１２は、図１０のデータを用いた０段ポインタによるアクセスについての説明図である。ファームウェアデータのように、更新されることは少ないが、重要なデータを格納する論理ブロックにアクセスするために、０段ポインタが用いられる。
【０１０８】
例えば、図１１の場合に、論理ブロック０にアクセスする際には、ＡＴＩＰ３５２において、例えば０段ポインタとして示された論理ブロック０に対応したセグメント１の物理ブロック４に直接アクセスすることができる。
【０１０９】
なお、０段ポインタで管理されている論理ブロックは、２段ポインタ又は１段ポインタを用いて参照されるＡＴによっても管理される。これは、論理ブロックと対応していない物理ブロックの管理を物理セグメント単位で管理しているからである。
【０１１０】
図９の不揮発性記憶装置の書き込み時における処理について説明する。主な処理の流れは、図３を参照して説明したものと同様であるが、ＡＴ更新を行うステップにおける処理が異なる。
【０１１１】
図１３は、図９の不揮発性記憶装置の書き込み時におけるＡＴを更新するステップの処理の例を示すフローチャートである。図１３において、ステップＳ３２，Ｓ３４，Ｓ４０の処理は、図４を参照して説明したものと同じであり、ステップＳ１５０の処理は、図８を参照して説明したものと同じであるので、その説明を省略する。
【０１１２】
ステップＳ２７２では、コントローラ３２０は、書き込みを行う論理ブロックが１段ポインタで管理されている論理ブロック（１段ポインタブロック）であるか否かを判断する。１段ポインタで管理されている場合には、ステップＳ２７６に進み、その他の場合には、ステップＳ２７４に進む。
【０１１３】
ステップＳ２７４では、コントローラ３２０は、選択されたＡＴ予約ブロックの物理アドレスでＡＴＩＲＡＭ３３２を更新する。
【０１１４】
ステップＳ２７６では、コントローラ３２０は、ステップＳ３４で選択したＡＴ予約ブロックの物理アドレスに応じてＡＴＩＰ３５２を更新する。
【０１１５】
ステップＳ２７８では、コントローラ３２０は、ステップＳ４０の処理が正常終了したか否かを判断する。正常終了した場合は、ステップＳ２８０に進み、正常終了しなかった場合は、ステップＳ３２に戻る。
【０１１６】
ステップＳ２８０では、コントローラ３２０は、書き込みを行う論理ブロックが０段ポインタで管理されている論理ブロック（０段ポインタブロック）であるか否かを判断する。０段ポインタで管理されている場合には、ステップＳ２８２に進み、その他の場合には、処理を終了する。
【０１１７】
ステップＳ２８２では、コントローラ３２０は、ＡＴＩＰ３５２の更新を行い、処理を終了する。
【０１１８】
このように、第３の実施形態の不揮発性記憶装置では、保持するデータの重要性や書き込み頻度に応じて、管理領域から物理ブロックへのリンク構成を変更することができる。すなわち、書き込み頻度の少ない論理セグメントを１段ポインタを用いて管理するので、第２の実施形態の場合に比べて、ＡＴＩ予約ブロック数を減らすことが可能となる。また、更新頻度が少ないが重要なデータを０段ポインタを用いて管理するので、初期化時等に簡便な処理でデータを取得することが可能となり、開発工数の削減、初期化に要する時間の短縮を図ることができる。
【０１１９】
【発明の効果】
以上のように、本発明によると、不揮発性メモリの各物理ブロックに対する書き込み頻度を均等なものに近づけることができるので、不揮発性メモリの故障を防ぎ、これを用いる不揮発性記憶装置の寿命を伸ばすことができる。
【０１２０】
また、不揮発性メモリ内に論理データを管理するブロックが常に存在するので、供給される電源の電圧が低下しても論理データは破壊されないようにすることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る不揮発性記憶装置のブロック図である。
【図２】図１の不揮発性メモリが格納するデータの構成についての説明図である。
【図３】図１の不揮発性記憶装置の書き込み時における処理の例を示すフローチャートである。
【図４】図３のＡＴを更新するステップにおける処理の例を示すフローチャートである。
【図５】本発明の第２の実施形態に係る不揮発性記憶装置のブロック図である。
【図６】図５の不揮発性メモリが格納するデータの構成についての説明図である。
【図７】図５の不揮発性記憶装置の書き込み時におけるＡＴを更新するステップの処理の例を示すフローチャートである。
【図８】図７のＡＴＩの更新を行うステップにおける処理の例を示すフローチャートである。
【図９】本発明の第３の実施形態に係る不揮発性記憶装置のブロック図である。
【図１０】図９の不揮発性メモリが格納するデータの構成についての説明図である。
【図１１】図１０のデータを用いた１段ポインタによるアクセスについての説明図である。
【図１２】図１０のデータを用いた０段ポインタによるアクセスについての説明図である。
【図１３】図９の不揮発性記憶装置の書き込み時におけるＡＴを更新するステップの処理の例を示すフローチャートである。
【図１４】一般的な不揮発性記憶装置におけるデータ管理についての説明図である。
【図１５】従来の不揮発性記憶装置の構成の例を示すブロック図である。
【図１６】図１５の不揮発性メモリの管理領域におけるデータ構造を示す説明図である。
【図１７】図１５の不揮発性記憶装置の書き込み時における処理の例を示すフローチャートである。
【符号の説明】
２０，２２０，３２０  コントローラ
４０，２４０，３４０  不揮発性メモリ
５２，２５２，３５２  ＡＴＩＰ（第３のテーブル）
５４，２５４，３５４  ＡＴＩ（第２のテーブル）
７０，２７０，３７０，３７１  ＡＴ（第１のテーブル）
８２ａ，８２ｂ，２８２ａ，２８２ｂ，３８２ａ，３８２ｂ  ＡＴ予約ブロック（第１の予約ブロック）
２８４ａ，３８４ａ  ＡＴＩ予約ブロック（第２の予約ブロック）
【図１】
2004234473.tif 000003
【図２】
2004234473.tif 000004
【図３】
2004234473.tif 000005
【図４】
2004234473.tif 000006
【図５】
2004234473.tif 000007
【図６】
2004234473.tif 000008
【図７】
2004234473.tif 000009
【図８】
2004234473.tif 000010
【図９】
2004234473.tif 000011
【図１０】
2004234473.tif 000012
【図１１】
2004234473.tif 000013
【図１２】
2004234473.tif 000014
【図１３】
2004234473.tif 000015
【図１４】
2004234473.tif 000016
【図１５】
2004234473.tif 000017
【図１６】
2004234473.tif 000018
【図１７】
2004234473.tif 000019