(57)【特許請求の範囲】
【請求項１】
外部電源に接続される主電源ユニットと、前記主電源ユニットによる電源供給が途絶えた場合に、電源供給を代行するバッテリユニットと、前記主電源ユニットもしくは前記バッテリユニットによる電源供給でデータ記憶制御を行う制御部と、を有する情報処理装置であって、
前記制御部は、
データを一時的に記憶する揮発メモリと、
前記揮発メモリに記憶されたデータの退避先である不揮発メモリと、
前記不揮発メモリへのデータ記憶状況を管理する不揮発メモリ管理テーブルと、
前記主電源ユニットによる電源供給が途絶えた場合に、前記揮発メモリに記憶されるデータを前記不揮発メモリに退避させるとともに、前記データ記憶状況を更新するデータ退避処理部と、
前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元処理部と、
前記データ復元処理部によるデータの書き戻しが完了すると、前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去処理部と、
を備え、
前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルに基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させることを特徴とする情報処理装置。
【請求項２】
前記不揮発メモリ管理テーブルは、前記不揮発メモリにおいてデータの消去単位となるブロックごとにデータ記憶状況を管理するものであって、前記不揮発メモリにおけるデータの消去単位となるブロックごとに、該ブロックについてのデータ記憶状況を示すフラグ情報を記憶し、
前記データ退避処理部は、前記データ退避時に、前記データの退避先となる前記不揮発メモリのブロックに対応する、前記不揮発メモリ管理テーブル中のフラグ情報に対してデータ格納中フラグを設定し、
前記データ消去処理部は、前記データ消去時に、前記データを消去する前記不揮発メモリのブロックに対応する、前記不揮発メモリ管理テーブル中のフラグ情報に対してデータ消去済フラグを設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記不揮発メモリ管理テーブルは、さらに、前記不揮発メモリにおけるデータの消去単位となるブロックを識別するためのブロック情報を記憶し、
前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルから前記データ消去済フラグが設定されたフラグ情報に対応するブロック情報を取得し、該ブロック情報に対応する前記不揮発メモリのブロックに該当データを再度退避させることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記データ消去処理部は、前記バッテリユニットの充電状況に応じてデータを消去することを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
主電源ユニットもしくはバッテリユニットからの電源供給で作動する情報処理装置で行われるデータ記憶を制御する制御部であって、
データを一時的に記憶する揮発メモリと、
前記揮発メモリに記憶されたデータの退避先である不揮発メモリと、
前記不揮発メモリへのデータ記憶状況を管理する不揮発メモリ管理テーブルと、
前記主電源ユニットによる電源供給が途絶えた場合に、前記バッテリユニットからの電源供給で前記揮発メモリに記憶されるデータを前記不揮発メモリに退避させるとともに、前記データ記憶状況を更新するデータ退避処理部と、
前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元処理部と、
前記データ復元処理部によるデータの書き戻しが完了すると、前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去処理部と、
を備え、
前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記バッテリユニットからの電源供給で前記不揮発メモリ管理テーブルに基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させることを特徴とする制御部。
【請求項６】
主電源ユニットもしくはバッテリユニットからの電源供給で作動する情報処理装置で行われるデータ記憶の制御方法であって、
前記主電源ユニットによる電源供給が途絶えた場合に、前記バッテリユニットからの電源供給で揮発メモリに記憶されるデータを不揮発メモリに退避させるとともに、所定のテーブルで管理される前記不揮発メモリへのデータ記憶状況を更新するデータ退避ステップと、
前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元ステップと、
前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去ステップと、
前記データ消去ステップ時に前記主電源ユニットによる電源供給が途絶えた場合には、前記バッテリユニットからの電源供給で前記データ記憶状況に基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させる再退避ステップと、
を含んだことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライトバックキャッシュを行う情報処理装置、該情報処理装置で行われるデータ記憶を制御する制御部およびデータ記憶の制御方法に関するものである。
【背景技術】
【０００２】
従来、ディスクアレイ装置は、自装置に対してリード／ライトアクセスを行ったホストコンピュータの待ち時間を短くするため、ライトバックキャッシュを行っている。
【０００３】
ライトバックキャッシュとは、具体的には、装置内のＭＰＵ（Micro Processing Unit）がＨＤＤ（Hard Disk Drive）にデータを書き込む前に、高速なアクセスが可能であるキャッシュメモリに該データを一旦書き込み、後に空いた時間を利用してキャッシュメモリからＨＤＤに書き込む処理動作を指す。
【０００４】
なお、キャッシュメモリは揮発性メモリであるので、停電などで電源供給が途絶えてしまった場合、キャッシュメモリに書き込まれたままのデータについては、消失させることなくどこかに退避させる必要がある。ライトバックキャッシュでは、ＨＤＤに書き込まれずにキャッシュメモリに残ったままのキャッシュデータの安全性を確保することは重要である。
【０００５】
特に、ホストコンピュータからのリード／ライトアクセス高速化のために大容量のキャッシュメモリを搭載したディスクアレイ装置は、多くのキャッシュデータをキャッシュメモリに書き込む。そのため、上記の安全性の確保がさらに重要になってくる。
【０００６】
そこで、特許文献１では、以下の手法が開示されている。つまり、停電が発生して装置が完全に電力を失う前に、キャッシュメモリ内に蓄積されたユーザデータを不揮発性メモリであるフラッシュメモリに保存する。そして、停電が復旧すれば、フラッシュメモリからキャッシュメモリにキャッシュデータを復元するという手法である。
【０００７】
【特許文献１】特表２００４−５３１８１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、フラッシュメモリに保存したバックアップデータについては、停電が復旧してキャッシュメモリに復元した後、次回の停電に備えて消去処理を行う必要がある。フラッシュメモリは初期状態からでないとデータの書き込みができないためである。
【０００９】
ここで問題となるのは、消去処理途中に再度停電が発生したにもかかわらず、消去した分のデータをバックアップせずにディスクアレイ装置を終了してしまうと、該データが完全に消失し、キャッシュメモリに復元できなくなるということである。
【００１０】
特許文献１で開示された手法をディスクアレイ装置に用いた場合、当然、大容量のフラッシュメモリが必要となり、停電時、該フラッシュメモリには多くのバックアップデータが書き込まれる。その場合、フラッシュメモリの消去処理に数十秒〜数分かかることがあり、その間に停電が発生してしまう可能性も高くなるので、消去データの安全性を確保することも重要である。
【００１１】
そこで、その対策の一つとして、停電により主電源の電力供給がなくなれば、バッテリの電力供給によって残りの消去処理を完了させてフラッシュメモリを書き込み可能とし、さらに、キャッシュメモリに復元したキャッシュデータを再度バックアップすることが考えられる。しかし、この処理動作には多くの電力が必要となるので、バッテリのコストが高くなるという課題があった。
【００１２】
また、他の対策として考えられるのが、フラッシュメモリを２面持ち、消去処理を行う対象は前回停電時にバックアップデータを書き込んだフラッシュメモリとし、次回停電発生時のバックアップに備える方法である。こうすることで、仮にフラッシュメモリの消去処理中に停電が発生しても、今回バックアップ先としたフラッシュメモリに対してはそもそも消去処理を行っていないので、バックアップデータについては保存されており問題はない。しかし、フラッシュメモリを２面持つことでコストが高くなるという課題があった。
【００１３】
そこで、本発明は、上述した従来技術における問題点を解消し、課題を解決するためになされたものであり、フラッシュメモリなどバックアップ先となる不揮発メモリの消去データの安全性を、コストを低くして確保できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、この装置は、外部電源に接続される主電源ユニットと、前記主電源ユニットによる電源供給が途絶えた場合に、電源供給を代行するバッテリユニットと、前記主電源ユニットもしくは前記バッテリユニットによる電源供給でデータ記憶制御を行う制御部と、を有する情報処理装置であって、前記制御部は、データを一時的に記憶する揮発メモリと、前記揮発メモリに記憶されたデータの退避先である不揮発メモリと、前記不揮発メモリへのデータ記憶状況を管理する不揮発メモリ管理テーブルと、前記主電源ユニットによる電源供給が途絶えた場合に、前記揮発メモリに記憶されるデータを前記不揮発メモリに退避させるとともに、前記データ記憶状況を更新するデータ退避処理部と、前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元処理部と、前記データ復元処理部によるデータの書き戻しが完了すると、前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去処理部と、を備え、前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルに基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させることを要件とする。
【発明の効果】
【００１５】
開示の装置では、不揮発メモリ管理テーブルにて不揮発メモリへのデータ記憶状況を管理しておく。不揮発メモリの消去処理中に停電などが起こった場合には、不揮発メモリ管理テーブルを参照し、データ記憶状況に基づいて不揮発メモリから消去した分のデータを、揮発メモリから不揮発メモリに再度退避させる。こうすることによって、不揮発メモリの消去データの安全性を、コストを低くして確保するという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に添付図面を参照して、本発明に係るディスクアレイ装置の好適な実施例について詳細に説明する。
【実施例１】
【００１７】
図１は、実施例１に係るディスクアレイ装置の概要構成を示す図である。同図に示すように、ディスクアレイ装置１０は、ホストコンピュータ２００に接続されて補助記憶装置となるものであり、ＭＰＵ１００と、ホストインタフェース１１０と、ディスクインタフェース１２０と、キャッシュメモリ１３０と、バックアップコントローラ１４０と、フラッシュメモリ１５０と、電源ユニット１６０と、バッテリユニット１７０と、複数のハードディスク１８０Ａ１〜１８０Ａｎと、を備える。
【００１８】
ＭＰＵ１００は、ホストコンピュータ２００からホストインタフェース１１０を介してデータを受信すると、一旦キャッシュメモリ１３０に書き込み、直ちにホストコンピュータ２００に書き込みの完了を通知する。
【００１９】
その後、ＭＰＵ１００は、空き時間を利用してキャッシュメモリ１３０に書き込んだキャッシュデータを読み出し、ディスクインタフェース１２０を介して複数のハードディスク１８０Ａ１〜１８０Ａｎに書き込む。このライトバックキャッシュにより、ホストコンピュータ２００の待ち時間を短くしている。
【００２０】
ところで、キャッシュメモリ１３０は揮発性メモリであるので、書き込まれたデータは、電力供給がなくなった時点で失われる。そのため、ディスクアレイ装置１０は、停電が発生して電源ユニット１６０からの電力供給が途絶えてしまった場合には、バッテリユニット１７０による電力供給に切り替え、キャッシュメモリ１３０内に蓄積されたユーザデータを不揮発性メモリであるフラッシュメモリ１５０に保存するバックアップを行っている。
【００２１】
具体的には、電源ユニット１６０は、外部電源からの電力供給が途絶えることで停電を検知すると、ＭＰＵ１００に停電発生を通知するとともに、バッテリユニット１７０に電力供給を指示する。
【００２２】
停電発生の通知を受けたＭＰＵ１００は、バックアップコントローラ１４０にバックアップ処理を指示する。
【００２３】
ＭＰＵ１００からの指示を受けたバックアップコントローラ１４０は、バックアップを行い、キャッシュメモリ１３０に書き込まれたデータをフラッシュメモリ１５０に書き込むと、バックアップの完了をＭＰＵ１００に通知する。
【００２４】
ＭＰＵ１００は、バックアップコントローラ１４０からのバックアップ完了の通知を受けてディスクアレイ装置１０の作動を終了する。
【００２５】
その後、ディスクアレイ装置１０に電源が投入されると、ＭＰＵ１００は、バックアップコントローラ１４０にキャッシュデータの復元処理を指示し、ディスクアレイ装置１０を停電発生前の状態で起動できるようにする。
【００２６】
このように、ＭＰＵ１００は、停電発生後にディスクアレイ装置１０を終了した場合と、終了指示を受け付けてディスクアレイ装置１０を正規に終了した場合とで、異なる処理動作を行っている。
【００２７】
以下では、図２を用いて、ディスクアレイ装置１０の起動から終了までを詳細に説明する。図２は、ディスクアレイ装置１０の各部の処理動作を説明するフローチャートであり、同図に示す処理フローは、ディスクアレイ装置１０の電源投入時に繰り返し実行される。
【００２８】
まず、ＭＰＵ１００は、前回、通常の終了処理を行ったか否かを装置内部状態より判定する（ステップＳ１１０）。
【００２９】
通常の終了処理を行っていた場合には（ステップＳ１１０肯定）、ＭＰＵ１００は、装置を起動し（ステップＳ１２０）、ホストコンピュータ２００の補助記憶装置としての通常処理を行う（ステップＳ１３０）。なお、通常処理中には、上述したライトバックキャッシュによってキャッシュメモリ１３０にユーザデータが蓄積される。
【００３０】
そして、ＭＰＵ１００は、通常処理を行う最中に停電が発生した場合には（ステップＳ２１０肯定）、バックアップコントローラ１４０を第一保存モードで作動させる（ステップＳ２２０）。
【００３１】
第一保存モードとなったバックアップコントローラ１４０は、通常処理中にＭＰＵ１００によってキャッシュメモリ１３０に書き込まれているデータをフラッシュメモリ１５０にバックアップする（ステップＳ２３０）。
【００３２】
そして、ＭＰＵ１００は、バックアップコントローラ１４０がバックアップを終えると、ディスクアレイ装置１０を停電時の終了処理で終了する（ステップＳ２４０）。
【００３３】
ステップＳ１３０に戻って、ＭＰＵ１００は、通常処理中に停電が発生することなく終了指示を受け付けると（ステップＳ２１０否定かつステップＳ２５０肯定）、ディスクアレイ装置１０を通常時の終了処理で終了する（ステップＳ２６０）。
【００３４】
ステップＳ１１０に戻って、ＭＰＵ１００は、通常の終了処理を行っていなかった（ステップＳ２４０参照）場合には（ステップＳ１１０否定）、バックアップコントローラ１４０を復元モードで作動させる（ステップＳ１４０）。
【００３５】
復元モードとなったバックアップコントローラ１４０は、フラッシュメモリ１５０のバックアップデータをキャッシュメモリ１３０に復元する（ステップＳ１５０）。復元を終えると、バックアップコントローラ１４０は、次回停電時のバックアップに備え、フラッシュメモリ１５０のバックアップデータの消去を開始する（ステップＳ１６０）。
【００３６】
そして、ＭＰＵ１００は、バックアップデータの消去途中に停電が発生することなく、バックアップコントローラ１４０によるバックアップデータの消去が完了すると（ステップＳ１７０肯定）、装置を起動し（ステップＳ１２０）、通常処理を行う（ステップＳ１３０）。
【００３７】
ところが、ＭＰＵ１００は、バックアップコントローラ１４０がバックアップデータを消去中に停電が発生した場合には（ステップＳ１７０否定かつステップＳ１８０肯定）、フラッシュメモリ１５０から消去してしまった分のデータをキャッシュメモリ１３０から書き戻すため、バックアップコントローラ１４０を第二保存モードで作動させる（ステップＳ１９０）。
【００３８】
第二保存モードとなったバックアップコントローラ１４０は、フラッシュメモリ１５０から消去してしまった分のデータをフラッシュメモリ１５０に書き戻す（ステップＳ２００）。
【００３９】
そして、ＭＰＵ１００は、バックアップコントローラ１４０がデータの書き戻しを終えると、ディスクアレイ装置１０を停電時の終了処理で終了する（ステップＳ２４０）。
【００４０】
以上のフローチャートで説明した各部の処理動作で、特に、第二保存モードとなったバックアップコントローラ１４０の処理動作が本発明に係るディスクアレイ装置１０の特徴部分である。以下では、バックアップコントローラ１４０の処理動作について詳細に説明していく。
【００４１】
その前に、キャッシュメモリ１３０（ＭＰＵ１００およびバックアップコントローラ１４０からのアクセスを受ける）およびフラッシュメモリ１５０（バックアップコントローラ１４０のみにアクセスされる）内のデータが書き込まれる領域について説明を行う。
【００４２】
図３に示すように、キャッシュメモリ１３０は、ＭＰＵ１００からアクセスされる全領域のうち、特に、「ＬＢＬＫ＿０」から「ＬＢＬＫ＿Ａ」までの論理ブロック番号が割り当てられる領域に対して、バックアップコントローラ１４０からのアクセスも受ける。つまり、ＭＰＵ１００は、この「ＬＢＬＫ＿０」から「ＬＢＬＫ＿Ａ」までの論理ブロック番号が割り当てられる領域にユーザデータを格納して上述のライトバックキャッシュを実現しており、該領域がバックアップ対象となる。
【００４３】
また、同図に示すように、フラッシュメモリ１５０は、データの消去単位（ブロック）ごとにアクセスされ、各ブロックには物理ブロック番号（「ＢＬＫ＿０」から「ＢＬＫ＿Ｎ（Ｎ＞Ａが望ましい）」が割り当てられる。そして、フラッシュメモリ１５０は、キャッシュデータの書き込み先となった空きブロックに対し、バックアップコントローラ１４０からのアクセスを受ける。例えば、フラッシュメモリ１５０は、バックアップコントローラ１４０によって、物理ブロック番号「ＢＬＫ＿０」が割り当てられた領域に、論理ブロック番号「ＬＢＬＫ＿０」が割り当てられた領域のキャッシュデータを書き込まれる。
【００４４】
なお、フラッシュメモリ１５０のブロックは、使用不可能な欠陥ブロックになることがあるため、バックアップコントローラ１４０は、停電が発生するたびに書き込み可能な空きブロックの検索を行う。したがって、仮に欠陥ブロック（例えば、図３では物理ブロック番号「ＢＬＫ＿１」や物理ブロック番号「ＢＬＫ＿２」）が発生し、キャッシュデータのバックアップ先が別の空きブロックで代替されることがあっても、ＭＰＵ１００は、そのことを意識することなく、同一の論理ブロック番号でキャッシュメモリ１３０にアクセスできる。論物変換テーブルは、空きブロックの検索の際にバックアップコントローラ１４０によって作成かつ利用され、論理ブロック番号と物理ブロック番号の対応関係を記憶するものである。
【００４５】
バックアップコントローラ１４０の処理動作の説明を始める。まず、バックアップコントローラ１４０を構成する各部の説明を行う。
【００４６】
図４は、バックアップコントローラ１４０の構成を示す図である。同図に示すように、バックアップコントローラ１４０は、ＤＭＡ（Direct Memory Access）コントローラ２０と、ブロックアクセス要求カウンタ３０と、フラッシュメモリ管理テーブル４０と、フラッシュメモリコントローラ５０と、ブロック消去要求カウンタ６０と、を備える。
【００４７】
ＤＭＡコントローラ２０は、ＭＰＵ１００のローカルバスに接続され、キャッシュメモリ１３０に対するデータの読み書きを行う。具体的には、ブロックアクセス要求カウンタ３０から論理ブロック番号を指示されると、対応するキャッシュメモリ１３０の領域にアクセスする。
【００４８】
ブロックアクセス要求カウンタ３０は、ＭＰＵ１００からの指示で論理ブロック番号をカウントアップし、ＤＭＡコントローラ２０にアクセス指示を行う。
【００４９】
フラッシュメモリ管理テーブル４０は、物理ブロック管理テーブル４１、論理ブロック管理テーブル４２および消去ブロック管理テーブル４３から構成される。
【００５０】
物理ブロック管理テーブル４１は、図３で説明した論物変換テーブルの一つであり、論理ブロック番号を（「ＬＢＬＫ＿０」〜「ＬＢＬＫ＿Ａ」）、物理ブロック番号（「ＢＬＫ＿０」〜「ＢＬＫ＿Ｎ」のうちいずれか）に変換するためのテーブルである（図５参照）。
【００５１】
論理ブロック管理テーブル４２は、同じく、図３で説明した論物変換テーブルの一つであり、物理ブロック番号（「ＢＬＫ＿０」〜「ＢＬＫ＿Ｎ」のうちいずれか）を、論理ブロック番号（「ＬＢＬＫ＿０」〜「ＬＢＬＫ＿Ａ」）に変換するためのテーブルである（図６参照）。
【００５２】
消去ブロック管理テーブル４３は、フラッシュメモリ１５０の各ブロックの状態を示すフラグを格納したテーブルである（図７参照）。フラグとしては、例えば、Ｅ（消去済み）、Ｎ（未消去：データ格納中）、Ｂ（消去処理中）、Ｉ（使用不可能）などがある。なお、Ｉ（使用不可能）は、フラッシュメモリ１５０のブロック故障により、該ブロックが使用できないことを示す。
【００５３】
フラッシュメモリコントローラ５０は、フラッシュメモリ１５０に接続され、フラッシュメモリ１５０に対するデータの読み書き、または、消去を行う。例えば、ブロック消去要求カウンタ６０から物理ブロック番号を指示されると、対応するフラッシュメモリ１５０の領域にアクセスしてデータを消去する。
【００５４】
ブロック消去要求カウンタ６０は、ＭＰＵ１００からの指示で物理ブロック番号をカウントアップし、フラッシュメモリコントローラ５０にデータの消去指示を行う。
【００５５】
次に、停電時の各部の処理動作を具体的に説明する。停電になると、ブロックアクセス要求カウンタ３０は、停電発生の通知を受けたＭＰＵ１００の指示により、第一保存モードで作動する（図２ステップＳ２２０参照）。
【００５６】
第一保存モードで作動するブロックアクセス要求カウンタ３０は、論理ブロック番号を、逐次、「ＬＢＬＫ＿０」から「ＬＢＬＫ＿Ａ」までＤＭＡコントローラ２０およびフラッシュメモリ管理テーブル４０に通知する（図８の丸を参照）。
【００５７】
ＤＭＡコントローラ２０は、通知された論理ブロック番号に対応するキャッシュメモリ１３０の領域からキャッシュデータを読み出し、読み出したキャッシュデータをフラッシュメモリコントローラ５０に転送する（図８の三角を参照）。
【００５８】
フラッシュメモリコントローラ５０は、フラッシュメモリ管理テーブル４０に論理ブロック番号が通知されるたびに、消去ブロック管理テーブル４３を参照し、フラッシュメモリ１５０で現在空きブロックとなっているブロックの物理ブロック番号で、最も若い番号を検索する。
【００５９】
図７を用いて説明すると、最初に、論理ブロック番号「ＬＢＬＫ＿０」が通知された場合には、Ｅ（消去済み）が対応付けられた物理ブロック番号で、最も若い物理ブロック番号である「ＢＬＫ＿０」が検索される。
【００６０】
また、フラッシュメモリコントローラ５０は、通知された論理ブロック番号と、検索した物理ブロック番号と、を対応付けて物理ブロック管理テーブル４１に格納するとともに、逆の対応関係を論理ブロック管理テーブル４２に格納する。
【００６１】
ところで、フラッシュメモリコントローラ５０は、ＤＭＡコントローラ２０からキャッシュデータが逐次転送されており（図８の三角を参照）、検索した物理ブロック番号に基づいて、キャッシュデータをフラッシュメモリ１５０に書き込む。その際、フラッシュメモリコントローラ５０は、消去ブロック管理テーブル４３で、現にキャッシュデータを書き込んだブロックの物理ブロック番号に対応するフラグをＥからＮ（未消去：データ格納中）に変更する。
【００６２】
図９を用いて説明すると、フラッシュメモリコントローラ５０は、最初に物理ブロック番号「ＢＬＫ＿０」を検索し、該物理ブロック番号に対応するブロックにデータを書き込んだので、物理ブロック番号「ＢＬＫ＿０」に対応付けられたフラグをＥからＮに変更する。
【００６３】
その後、フラッシュメモリ管理テーブル４０に論理ブロック番号「ＬＢＬＫ＿１」が通知された場合には、Ｅが対応付けられた最も若い物理ブロック番号「ＢＬＫ＿３」が検索され（「ＢＬＫ＿０」にはすでにＥが対応付けられている）、同様に、次には物理ブロック番号「ＢＬＫ＿４」が検索される（図８の三角を参照）。
【００６４】
ブロックアクセス要求カウンタ３０によって、論理ブロック番号が「ＬＢＬＫ＿Ａ」までカウントアップされると、バックアップ対象のキャッシュデータが全てフラッシュメモリ１５０に書き込まれ、バックアップ処理が完了するので、ＭＰＵ１００は、ディスクアレイ装置１０の作動を終了する。
【００６５】
次に、停電が復旧し、ディスクアレイ装置１０に電源が投入され、電源ユニット１６０が電力供給を開始したときの各部の処理動作を具体的に説明する。
【００６６】
ディスクアレイ装置１０に電源が投入されると、ＭＰＵ１００は、通常の終了処理を行っていないことを装置内部状態より判断しブロックアクセス要求カウンタ３０を復元モードで作動させる（図２ステップＳ１４０参照）。なお、このとき、バッテリユニット１７０は、外部電源からの電力供給によって、蓄電手段であるバッテリの充電を開始する。
【００６７】
復元モードで作動するブロックアクセス要求カウンタ３０は、論理ブロック番号を、逐次、「ＬＢＬＫ＿０」から「ＬＢＬＫ＿Ａ」までＤＭＡコントローラ２０およびフラッシュメモリ管理テーブル４０に通知する（図１０の丸を参照）。
【００６８】
フラッシュメモリコントローラ５０は、フラッシュメモリ管理テーブル４０に論理ブロック番号が通知されるたびに、物理ブロック管理テーブル４１を参照し、通知された論理ブロック番号を物理ブロック番号に変換する（図１０の四角を参照）。
【００６９】
図５を用いて説明すると、最初に通知される論理ブロック番号「ＬＢＬＫ＿０」が通知された場合には、フラッシュメモリコントローラ５０は、物理ブロック番号「ＢＬＫ＿０」に変換する。
【００７０】
そして、フラッシュメモリコントローラ５０は、変換した物理ブロック番号が割り当てられたブロックからバックアップデータを読み出し、ＤＭＡコントローラ２０に転送する（図１０の黒三角を参照）。
【００７１】
このようにＤＭＡコントローラ２０は、フラッシュメモリコントローラ５０からバックアップデータが逐次転送されており（図１０の黒三角を参照）、ブロックアクセス要求カウンタ３０から通知された論理ブロック番号に基づいて、バックアップデータをキャッシュメモリ１３０に書き込む。
【００７２】
ブロックアクセス要求カウンタ３０が論理ブロック番号を最後の「ＬＢＬＫ＿Ａ」までカウントアップすると、バックアップデータが全てキャッシュメモリ１３０に書き込まれるので、キャッシュデータの復元処理が完了する。
【００７３】
復元処理中、バッテリユニット１７０によるバッテリの充電が行われており、ＭＰＵ１００は、キャッシュメモリ１３０の復元が完了しても次の処理に移行せず、バッテリユニット１７０からバッテリの充電完了が通知されるまで待機する。
【００７４】
したがって、バッテリユニット１７０は、バッテリの充電が完了すると、ＭＰＵ１００に充電完了を通知する（図１１のＮ１参照）。ＭＰＵ１００は、この通知を受けてブロック消去要求カウンタ６０を作動させる。
【００７５】
ブロック消去要求カウンタ６０は、フラッシュメモリ管理テーブル４０を参照し、物理ブロック番号を、最も若い番号からフラッシュメモリコントローラ５０に通知する（図１１の四角を参照）。
【００７６】
また、ブロック消去要求カウンタ６０は、消去ブロック管理テーブル４３で、通知した物理ブロック番号に対応するフラグをＮからＢ（消去処理中）に変更する。
【００７７】
図１２を用いて説明すると、ブロック消去要求カウンタ６０は、最初に通知した物理ブロック番号「ＢＬＫ＿０」に対応するフラグをＮからＢに変更する。
【００７８】
フラッシュメモリコントローラ５０は、通知された物理ブロック番号に対応するフラッシュメモリ１５０のブロックからデータを消去し始める。そして、フラッシュメモリコントローラ５０は、データの消去処理が完了すると、ブロック消去要求カウンタ６０に消去完了の通知を行う（図１１のＲ１参照）。
【００７９】
通知を受けたブロック消去要求カウンタ６０は、消去ブロック管理テーブル４３で、通知した物理ブロック番号に対応するフラグをＢからＥ（消去済み）に変更し、次に若い番号の物理ブロック番号をフラッシュメモリコントローラ５０に通知する。
【００８０】
図１３を用いて説明すると、ブロック消去要求カウンタ６０は、最初に通知した物理ブロック番号「ＢＬＫ＿０」に対応するフラグをＢからＥに変更する。そして、ブロック消去要求カウンタ６０は、次に若い番号の物理ブロック番号「ＢＬＫ＿３」をフラッシュメモリコントローラ５０に通知する。
【００８１】
フラッシュメモリコントローラ５０は、このように、ブロック消去要求カウンタ６０から逐次物理ブロック番号が通知されるので、同様に、通知された物理ブロック番号に対応するブロックのデータの消去を開始し、データの消去処理が完了すれば、ブロック消去要求カウンタ６０に消去完了の通知を行う。
【００８２】
その後、ブロック消去要求カウンタ６０が物理ブロック番号を最後までカウントアップすると、フラッシュメモリ１５０のバックアップデータが全て消去されるので、消去ブロック管理テーブル４３は、例えば、図７に示した状態に戻る。
【００８３】
なお、ブロック消去要求カウンタ６０は、最後の物理ブロック番号を通知し、該物理ブロック番号に対応するフラグをＢからＥに変更すると、ＭＰＵ１００に消去処理の完了を通知する。通知を受けたＭＰＵ１００は、装置を起動し、ホストコンピュータ２００の補助記憶装置として通常処理を行う（図２ステップＳ１２０およびステップＳ１３０参照）。
【００８４】
しかし、ブロック消去要求カウンタ６０によって最後の物理ブロック番号がカウントアップされるまでの間に、停電が発生してしまう場合がある（図２のフローチャートで説明すれば、ステップＳ１７０否定かつステップＳ１８０肯定となった場合）。その際の各部の処理を以下に具体的に説明する。
【００８５】
ＭＰＵ１００は、ブロック消去要求カウンタ６０から消去処理の完了が通知される前に、電源ユニット１６０から停電発生を通知されると、ブロック消去要求カウンタ６０の作動を停止する。そして、ＭＰＵ１００は、フラッシュメモリコントローラ５０がブロック消去要求カウンタ６０に対して行った消去完了の通知を取得すると、ブロックアクセス要求カウンタ３０を第二保存モードで作動させる。
【００８６】
第二保存モードで作動するブロックアクセス要求カウンタ３０は、フラッシュメモリ管理テーブル４０の消去ブロック管理テーブル４３からフラグ「Ｂ」に対応する物理ブロック番号を検索する。
【００８７】
そして、ブロックアクセス要求カウンタ３０は、検索した物理ブロック番号を論理ブロック管理テーブル４２によって論理ブロック番号に変換し、この論理ブロック番号までカウントアップすることを決定する。
【００８８】
なお、検索した物理ブロック番号に対応するブロックのデータは消去処理が完了しているので（ＭＰＵ１００は、フラッシュメモリコントローラ５０がブロック消去要求カウンタ６０に対して行った消去完了の通知を取得してからブロックアクセス要求カウンタ３０を第二保存モードで作動させるため）、ブロックアクセス要求カウンタ３０は、対応するフラグをＢからＥに変更する。
【００８９】
そして、ブロックアクセス要求カウンタ３０は、論理ブロック番号を、「ＬＢＬＫ＿０」から、決定した論理ブロック番号まで、ＤＭＡコントローラ２０およびフラッシュメモリ管理テーブル４０に通知する。
【００９０】
ＤＭＡコントローラ２０は、通知された論理ブロック番号に対応するキャッシュメモリ１３０の領域からキャッシュデータを読み出し、読み出したキャッシュデータをフラッシュメモリコントローラ５０に転送する。
【００９１】
フラッシュメモリコントローラ５０は、フラッシュメモリ管理テーブル４０に論理ブロック番号が通知されるたびに、消去ブロック管理テーブル４３を参照し、フラッシュメモリ１５０で現在空きブロックとなっているブロックの物理ブロック番号で、最も若い番号を検索する。
【００９２】
また、フラッシュメモリコントローラ５０は、通知された論理ブロック番号と、検索した物理ブロック番号との対応関係を、物理ブロック管理テーブル４１や論理ブロック管理テーブル４２に格納することとなるが、前回停電時に格納した論理ブロック番号と同一のものが存在するので、その場合には更新を行う。
【００９３】
ところで、フラッシュメモリコントローラ５０は、ＤＭＡコントローラ２０からキャッシュデータが逐次転送されており、検索した物理ブロック番号に基づいて、キャッシュデータをフラッシュメモリ１５０に書き込む。その際、フラッシュメモリコントローラ５０は、消去ブロック管理テーブル４３で、現にキャッシュデータを書き込んだブロックの物理ブロック番号に対応するフラグをＥからＮ（未消去：データ格納中）に変更する。
【００９４】
ブロックアクセス要求カウンタ３０によって、上記した所定の論理ブロック番号までカウントアップされると、フラッシュメモリ１５０から消去してしまったバックアップデータが全てフラッシュメモリ１５０に書き込まれるので、ＭＰＵ１００は、ディスクアレイ装置１０の作動を終了する。
【００９５】
以上が停電発生時、停電復旧時およびフラッシュメモリ１５０消去中における停電発生時のバックアップコントローラ１４０の処理動作の説明である。なお、図１５に示すように、ディスクアレイ装置１０は、複数のハードディスク１８０Ａ１〜１８０Ａｎを除く各部が現用系と予備系で構成されたものであってもよい。
【００９６】
［実施例１の効果］
上記したように、実施例１によれば、消去ブロック管理テーブル４３にてフラッシュメモリ１５０へのデータ記憶状況を管理しておく。フラッシュメモリ１５０の消去処理中に停電が起こった場合には、消去ブロック管理テーブル４３を参照し、データ記憶状況に基づいてフラッシュメモリ１５０から消去した分のデータを、キャッシュメモリ１３０からフラッシュメモリ１５０に再度退避させる。こうすることによって、フラッシュメモリ１５０の消去データの安全性を、コストを低くして確保することが可能となる。
【実施例２】
【００９７】
実施例１では、ＭＰＵ１００は、キャッシュメモリ１３０の復元が完了しても次の処理に移行せず、バッテリユニット１７０からバッテリの充電完了が通知されるまで待機していた。
【００９８】
しかし、本発明によれば、フラッシュメモリ１５０の消去中に停電が発生しても、消去処理を中断し、フラッシュメモリ１５０から消去してしまった分のデータをキャッシュメモリ１３０から書き戻すことができる。
【００９９】
その場合、フラッシュメモリ１５０の消去が開始されて間もなく停電が発生した場合には、書き戻すべきデータは少なく、書き戻すのに必要なエネルギーも少ない。なお、最も多くのエネルギーが必要とされるのは、フラッシュメモリ１５０の消去が完了する間際に停電が発生した場合である。
【０１００】
したがって、バッテリの充電完了を待たずに消去処理へ移行し、仮にデータ消去対象のブロックに対するデータ消去を開始した直後に停電が発生したとしても、該ブロックに対するデータ消去を完了し、さらに、消去してしまった分のデータを書き戻すだけの充電量に達した各時点で、該ブロックの物理ブロック番号を通知していってもよい。
【０１０１】
図１４は、実施例２に係るバックアップコントローラ１４０の構成を示す図である。同図に示すように、バックアップコントローラ１４０は、実施例１と同様、ＤＭＡコントローラ２０と、ブロックアクセス要求カウンタ３０と、フラッシュメモリ管理テーブル４０と、フラッシュメモリコントローラ５０と、ブロック消去要求カウンタ６０と、を備え、実施例１とは異なり、充電量変換テーブル７０を備える。
【０１０２】
充電量変換テーブル７０は、バッテリユニット１７０より通知される充電量から、消去可能なブロック数を算出し、ブロック消去要求カウンタ６０に通知する。例えば、充電量変換テーブル７０は、仮に２番目にデータ消去対象となったブロックに対するデータ消去が開始された直後に停電が発生したとしても、各部の処理動作によって、該ブロックに対するデータ消去が完了し、さらに、消去済みの１番目のブロックのデータおよび２番目のブロックのデータが書き戻されるだけの充電量がバッテリユニット１７０より通知されると、ブロック数「２」を算出する。
【０１０３】
以下では、キャッシュデータの復元処理が完了してからの各部の処理動作を、実施例１と同様な部分については省略して説明する。
【０１０４】
ＭＰＵ１００は、キャッシュメモリ１３０の復元が完了すると、バッテリの充電完了の通知を待たず、ただちにブロック消去要求カウンタ６０を作動させる。
【０１０５】
ブロック消去要求カウンタ６０は、充電量変換テーブル７０を参照して消去可能なブロック数を取得する。消去可能なブロック数が「１」以上であれば、ブロック消去要求カウンタ６０は、物理ブロック番号を、最も若い番号からフラッシュメモリコントローラ５０に通知する。
【０１０６】
そして、ブロック消去要求カウンタ６０は、ブロック消去要求カウンタ６０から消去完了の通知があれば、同じく充電量変換テーブル７０を参照して消去可能なブロック数を取得する。今度は、ブロック消去要求カウンタ６０は、消去可能なブロック数が「２」以上であれば、次に若い（２番目に若い）番号の物理ブロック番号をフラッシュメモリコントローラ５０に通知する。
【０１０７】
以降同様に、ブロック消去要求カウンタ６０は、消去完了が通知されるたびに充電量変換テーブル７０を参照し、消去可能なブロック数がｘ以上であれば、ｘ番目に若い番号の物理ブロック番号をフラッシュメモリコントローラ５０に通知していく。なお、消去可能なブロック数が必要数以上なければ、充電量変換テーブル７０を監視し、必要数以上になった時点で物理ブロック番号をフラッシュメモリコントローラ５０に通知する。
【０１０８】
［実施例２の効果］
上記したように、実施例２によれば、バッテリ充電と、フラッシュメモリの消去とを同時進行させることで、ディスクアレイ装置に電源を投入してから装置が起動するまでの時間を短縮することが可能となる。
【０１０９】
以上の実施例１〜２を含む実施形態に関し、更に以下の付記を開示する。
【０１１０】
（付記１）外部電源に接続される主電源ユニットと、前記主電源ユニットによる電源供給が途絶えた場合に、電源供給を代行するバッテリユニットと、前記主電源ユニットもしくは前記バッテリユニットによる電源供給でデータ記憶制御を行う制御部と、を有する情報処理装置であって、
前記制御部は、
データを一時的に記憶する揮発メモリと、
前記揮発メモリに記憶されたデータの退避先である不揮発メモリと、
前記不揮発メモリへのデータ記憶状況を管理する不揮発メモリ管理テーブルと、
前記主電源ユニットによる電源供給が途絶えた場合に、前記揮発メモリに記憶されるデータを前記不揮発メモリに退避させるとともに、前記データ記憶状況を更新するデータ退避処理部と、
前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元処理部と、
前記データ復元処理部によるデータの書き戻しが完了すると、前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去処理部と、
を備え、
前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルに基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させることを特徴とする情報処理装置。
【０１１１】
（付記２）前記不揮発メモリ管理テーブルは、前記不揮発メモリにおいてデータの消去単位となるブロックごとにデータ記憶状況を管理するものであって、
前記データ退避処理部は、前記データ退避時に前記不揮発メモリ管理テーブルの該当ブロックに対してデータ格納中フラグを設定し、
前記データ消去処理部は、前記データ消去時に前記不揮発メモリ管理テーブルの該当ブロックに対してデータ消去済フラグを設定することを特徴とする付記１に記載の情報処理装置。
【０１１２】
（付記３）前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルから前記データ消去済フラグが設定されたブロック情報を取得し、該ブロック情報に対応するブロックに該当データを再度退避させることを特徴とする付記２に記載の情報処理装置。
【０１１３】
（付記４）前記データ消去処理部は、前記バッテリユニットの充電状況に応じてデータを消去することを特徴とする付記２または３に記載の情報処理装置。
【０１１４】
（付記５）主電源ユニットもしくはバッテリユニットからの電源供給で作動する情報処理装置で行われるデータ記憶を制御する制御部であって、
データを一時的に記憶する揮発メモリと、
前記揮発メモリに記憶されたデータの退避先である不揮発メモリと、
前記不揮発メモリへのデータ記憶状況を管理する不揮発メモリ管理テーブルと、
前記主電源ユニットによる電源供給が途絶えた場合に、前記揮発メモリに記憶されるデータを前記不揮発メモリに退避させるとともに、前記データ記憶状況を更新するデータ退避処理部と、
前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元処理部と、
前記データ復元処理部によるデータの書き戻しが完了すると、前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去処理部と、
を備え、
前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルに基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させることを特徴とする制御部。
【０１１５】
（付記６）前記不揮発メモリ管理テーブルは、前記不揮発メモリにおいてデータの消去単位となるブロックごとにデータ記憶状況を管理するものであって、
前記データ退避処理部は、前記データ退避時に前記不揮発メモリ管理テーブルの該当ブロックに対してデータ格納中フラグを設定し、
前記データ消去処理部は、前記データ消去時に前記不揮発メモリ管理テーブルの該当ブロックに対してデータ消去済フラグを設定することを特徴とする付記５に記載の制御部。
【０１１６】
（付記７）前記データ退避処理部は、前記データ消去処理部による消去処理時に前記主電源ユニットによる電源供給が途絶えた場合には、前記不揮発メモリ管理テーブルから前記データ消去済フラグが設定されたブロック情報を取得し、該ブロック情報に対応するブロックに該当データを再度退避させることを特徴とする付記６に記載の制御部。
【０１１７】
（付記８）前記データ消去処理部は、前記バッテリユニットの充電状況に応じてデータを消去することを特徴とする付記６または７に記載の制御部。
【０１１８】
（付記９）主電源ユニットもしくはバッテリユニットからの電源供給で作動する情報処理装置で行われるデータ記憶の制御方法であって、
前記主電源ユニットによる電源供給が途絶えた場合に、揮発メモリに記憶されるデータを不揮発メモリに退避させるとともに、所定のテーブルで管理される前記不揮発メモリへのデータ記憶状況を更新するデータ退避ステップと、
前記主電源ユニットによる電源供給が回復すると、前記不揮発メモリに退避させたデータを前記揮発メモリに書き戻すデータ復元ステップと、
前記不揮発メモリに退避させたデータを消去しつつ、前記データ記憶状況を更新するデータ消去ステップと、
前記データ消去ステップ時に前記主電源ユニットによる電源供給が途絶えた場合には、前記データ記憶状況に基づいて、前記不揮発メモリから消去した分のデータを前記揮発メモリから前記不揮発メモリに退避させる再退避ステップと、
を含んだことを特徴とする制御方法。
【０１１９】
（付記１０）前記データ記憶状況の更新は、前記所定のテーブル内で、前記不揮発メモリにおいてデータの消去単位となるブロックごとに行われるものであって、
前記データ退避ステップにおいて、前記データ退避時に前記所定のテーブルの該当ブロックに対してデータ格納中フラグを設定し、
前記データ消去ステップにおいて、前記データ消去時に前記所定のテーブルの該当ブロックに対してデータ消去済フラグを設定することを特徴とする付記９に記載の制御方法。
【０１２０】
（付記１１）前記データ退避ステップにおいて、前記データ消去ステップ時に前記主電源ユニットによる電源供給が途絶えた場合には、前記所定のテーブルから前記データ消去済フラグが設定されたブロック情報を取得し、該ブロック情報に対応するブロックに該当データを再度退避させることを特徴とする付記１０に記載の制御方法。
【０１２１】
（付記１２）前記データ消去ステップにおいて、前記バッテリユニットの充電状況に応じてデータを消去することを特徴とする付記９または１０に記載の制御方法。
【産業上の利用可能性】
【０１２２】
以上のように、本発明に係る情報処理装置、該情報処理装置で行われるデータ記憶を制御する制御部およびデータ記憶の制御方法は、ライトバックキャッシュでデータ記憶をする場合に有用であり、バックアップ先となる不揮発メモリの消去データの安全性を、コストを低くして確保することに適する。
【図面の簡単な説明】
【０１２３】
【図１】実施例１に係るディスクアレイ装置の概要構成を示す図である。
【図２】ディスクアレイ装置１０の各部の処理動作を説明するフローチャートである。
【図３】キャッシュメモリ１３０およびフラッシュメモリ１５０内のデータが書き込まれる領域を説明するための図である。
【図４】バックアップコントローラ１４０の構成を示す図である。
【図５】物理ブロック管理テーブルの具体例を示す図である。
【図６】論理ブロック管理テーブルの具体例を示す図である。
【図７】消去ブロック管理テーブルの具体例を示す図である。
【図８】停電時の各部の処理動作を説明するための図である。
【図９】消去ブロック管理テーブルの更新を説明するための図である。
【図１０】停電が復旧して電源が投入されたときの各部の処理動作を説明するための図である。
【図１１】復元が完了してフラッシュメモリの消去処理を行う際の各部の処理動作を説明するための図である。
【図１２】消去ブロック管理テーブルの更新を説明するための図である。
【図１３】消去ブロック管理テーブルの更新を説明するための図である。
【図１４】実施例２に係るバックアップコントローラ１４０の構成を示す図である。
【図１５】ディスクを除く各部を冗長構成としたディスクアレイ装置の概要構成を示す図である。
【符号の説明】
【０１２４】
１０  ディスクアレイ装置
２０  ＤＭＡコントローラ
３０  ブロックアクセス要求カウンタ
４０  フラッシュメモリ管理テーブル
５０  フラッシュメモリコントローラ
６０  ブロック消去要求カウンタ
７０  充電量変換テーブル
１００  ＭＰＵ
１１０  ホストインタフェース
１２０  ディスクインタフェース
１３０  キャッシュメモリ
１４０  バックアップコントローラ
１５０  フラッシュメモリ
１６０  電源ユニット
１７０  バッテリユニット
１８０Ａ１〜１８０Ａｎ  ハードディスク
２００  ホストコンピュータ
【図１】
0004536785.tif 000002
【図２】
0004536785.tif 000003
【図３】
0004536785.tif 000004
【図４】
0004536785.tif 000005
【図５】
0004536785.tif 000006
【図６】
0004536785.tif 000007
【図７】
0004536785.tif 000008
【図８】
0004536785.tif 000009
【図９】
0004536785.tif 000010
【図１０】
0004536785.tif 000011
【図１１】
0004536785.tif 000012
【図１２】
0004536785.tif 000013
【図１３】
0004536785.tif 000014
【図１４】
0004536785.tif 000015
【図１５】
0004536785.tif 000016