(57)【要約】【課題】情報処理装置の信頼性を向上させる。【解決手段】制御装置７は、データ保護機能のない経路２１を経由して第１の記憶装置４からデータを読み出し、このデータのエラーチェック用のエラーチェック情報を生成する生成部２７と、データとエラーチェック情報とを第２の記憶装置６に書き込むと共に、経路２１を経由せずにエラーチェック情報を一時記憶領域２３に書き込む第１の書き込み部２７と、エラーチェック情報を、経路２１を経由して第１の記憶装置４に書き込む第２の書き込み部２９と、第１の書き込み部２７が第１の記憶装置４が書き込んだエラーチェック情報と、第２の書き込み部２９が一時記憶領域２３に書き込んだエラーチェック情報とを比較し、両者が一致しない場合に、経路２１でエラーが発生していると判定する判定部２８と、をそなえる。【選択図】図１
2015215675.tif 000002
【特許請求の範囲】
【請求項１】
データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、該データのエラーチェック用のエラーチェック情報を生成する生成部と、
前記データと前記エラーチェック情報とを第２の記憶装置に書き込むと共に、前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込む第１の書き込み部と、
前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込む第２の書き込み部と、
前記第１の書き込み部が前記第１の記憶装置が書き込んだ前記エラーチェック情報と、前記第２の書き込み部が前記一時記憶領域に書き込んだ前記エラーチェック情報とを比較し、両者が一致しない場合に、前記経路でエラーが発生していると判定する判定部と、
をそなえることを特徴とする制御装置。
【請求項２】
前記第１の記憶装置は、データが保護されている第１の領域と、データが保護されていない第２の領域とを有し、
前記第２の書き込み部は、前記第１の記憶装置の前記第２の領域のデータに対して前記エラーチェック情報を第１の記憶装置の前記第２の領域に書き込む
ことを特徴とする請求項１記載の制御装置。
【請求項３】
前記制御装置は、主電源の電力供給停止時に副電源から電力の供給を受けて前記生成部、前記第１の書き込み部、前記第２の書き込み部、及び判定部の処理を実行させる
ことを特徴とする請求項１又は２記載の制御装置。
【請求項４】
前記判定部は、前記経路でエラーが発生していると判定した場合に、前記主電源の電力復旧後の前記第２の記憶装置から前記第１の記憶装置への前記データの書き戻しを阻止させる
ことを特徴とする請求項３記載の制御装置。
【請求項５】
データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、
該データのエラーチェック用のエラーチェック情報を生成し、
前記データと前記エラーチェック情報とを第２の記憶装置に書き込み、
前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込み、
前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込み、
前記第１の記憶装置に書き込まれた前記エラーチェック情報と、前記一時記憶領域に書き込まれた前記エラーチェック情報とを比較して、両者が一致しない場合に、前記経路でエラーが発生していると判定する
ことを特徴とする制御方法。
【請求項６】
データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、
該データのエラーチェック用のエラーチェック情報を生成し、
前記データと前記エラーチェック情報とを第２の記憶装置に書き込み、
前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込み、
前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込み、
前記第１の記憶装置に書き込まれた前記エラーチェック情報と、前記一時記憶領域に書き込まれた前記エラーチェック情報とを比較して、両者が一致しない場合に、前記経路でエラーが発生していると判定する
処理をコンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御方法、及び制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置にそなえられているControl Module（ＣＭ）等の情報処理装置では、停電等の発生時に、Central Processing Unit（ＣＰＵ）配下のキャッシュメモリ内のデータを、停電時給電ユニットからの電力を用いて不揮発性メモリに退避させる。そして、次に情報処理装置を起動する際に、不揮発性メモリに退避（バックアップ）させたデータがキャッシュメモリに戻され、情報処理装置の処理が再開される。なお、以下の説明では、停電など、情報処理装置への電力供給が絶たれる状況を総称して「停電」と呼ぶ。
【０００３】
キャッシュメモリのデータのバックアップ先のメモリとしては、Serial Advanced Technology Attachment（ＳＡＴＡ）準拠のSolid State Drive（ＳＳＤ）（ＳＡＴＡ−ＳＳＤ）が多く用いられる。
ＳＡＴＡ−ＳＳＤに対して、電源の切断前に、Ｓｔａｎｄｂｙ、Ｓｔａｎｄｂｙ  Ｉｍｍｅｄｉａｔｅ、Ｓｌｅｅｐ等のコマンドを実行して、パワーオフ（Ｐ−ＯＦＦ）シーケンス（ＳＥＱ）を実行する必要がある。パワーオフシーケンスを実行せずに電力供給が絶たれると、期待外のパワーオフが発生して、ＳＡＴＡ−ＳＳＤが故障する可能性がある。ここで、ＳｔａｎｄｂｙコマンドはＳＡＴＡ−ＳＳＤをスタンドバイモードに移行させるコマンドであり、Ｓｔａｎｄｂｙ  ＩｍｍｅｄｉａｔｅコマンドはＳＡＴＡ−ＳＳＤを即時にスタンドバイモードに移行させるコマンである。又、Ｓｌｅｅｐコマンドは、ＳＡＴＡ−ＳＳＤスリープモードに移行させるコマンドである。これらのコマンドやパワーオフシーケンスはＡＴＡにおいて一般的な概念であるため、その詳細な説明は省略する。なお、以下、簡潔を期するためにＳＡＴＡ−ＳＳＤを単にＳＳＤと呼ぶ。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１５８５９１号公報
【特許文献２】特開２００７−１２２４７６号公報
【特許文献３】特開２００６−０６５３９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データの保護のため、キャッシュメモリのデータをＳＳＤに退避させる際に、所定のサイズのデータブロックに対してCyclic Redundancy Check（ＣＲＣ）コードを生成して、データと共にＣＲＣコードをＳＳＤに退避させることが一般的に行なわれている。
一方、ＳＳＤにバックアップする対象となるキャッシュメモリのデータには、ハードウェアやファームウェアによってデータが保護されている領域と、データの保護が一切されてない領域とが存在する。
【０００６】
一般に、キャッシュメモリのデータをＳＳＤにバックアップする機能は、Field-Programmable Gate Array（ＦＰＧＡ）として実装されるが、ＦＰＧＡのベンダーから提供されるハードウェア部品の中には、データ保護機構を持たないものもある。このようなデータ保護機能を持たないハードウェア部品が故障すると、データの破損を引き起こすおそれがある。
【０００７】
このような部品が使用されている場合には、キャッシュメモリのデータ保護が行なわれていない領域のデータがハードウェア故障等により破損し、破損したデータがＳＳＤにバックアップされることが考えられる。情報処理システムの電源復旧（復電）後に、破損したデータがＳＳＤからキャッシュメモリに復元されると、情報処理システムがシステムダウンしてしまうおそれがある。
【０００８】
このため、ハードウェアやファームウェアによるデータ保護が提供されないデータに対しても、何らかのデータ保護機能を提供することが望ましい。
しかし、情報処理システムにデータ保護機能を新たに設ける場合、既存のハードウェアやファームウェアを変更する必要があり、コストの上昇を招く。このため、情報処理システムの既存の構成を利用してデータ保護を提供することが望ましい。
【０００９】
上記課題に鑑みて、１つの側面では、本発明は、情報処理装置の信頼性を向上させることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１０】
このため、制御装置は、データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、該データのエラーチェック用のエラーチェック情報を生成する生成部と、前記データと前記エラーチェック情報とを第２の記憶装置に書き込むと共に、前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込む第１の書き込み部と、前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込む第２の書き込み部と、前記第１の書き込み部が前記第１の記憶装置が書き込んだ前記エラーチェック情報と、前記第２の書き込み部が前記一時記憶領域に書き込んだ前記エラーチェック情報とを比較し、両者が一致しない場合に、前記経路でエラーが発生していると判定する判定部と、をそなえる。
【００１１】
又、制御方法は、データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、該データのエラーチェック用のエラーチェック情報を生成し、前記データと前記エラーチェック情報とを第２の記憶装置に書き込み、前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込み、前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込み、前記第１の記憶装置に書き込まれた前記エラーチェック情報と、前記一時記憶領域に書き込まれた前記エラーチェック情報とを比較して、両者が一致しない場合に、前記経路でエラーが発生していると判定する。
【００１２】
更に、制御プログラムは、データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、該データのエラーチェック用のエラーチェック情報を生成し、前記データと前記エラーチェック情報とを第２の記憶装置に書き込み、前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込み、前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込み、前記第１の記憶装置に書き込まれた前記エラーチェック情報と、前記一時記憶領域に書き込まれた前記エラーチェック情報とを比較して、両者が一致しない場合に、前記経路でエラーが発生していると判定する処理をコンピュータに実行させる。
【発明の効果】
【００１３】
本発明によれば、情報処理装置の信頼性を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態の一例としての情報処理装置のハードウェア構成を示す図である。
【図２】実施形態の一例としてのキャッシュメモリを示す図であり、（ａ）はキャッシュメモリ内のデータの配置を、（ｂ）は停電時のキャッシュメモリのバックアップ途中の状態を、（ｃ）は停電時のキャッシュメモリへのＣＲＣコードの書き込みをそれぞれ示す。
【図３】実施形態の一例としての情報処理装置における停電発生時の停電処理を示すフローチャートである。
【図４】実施形態の一例としての情報処理装置の停電発生時の停電処理を例示する図である。
【図５】実施形態の一例としての情報処理装置の停電処理においてデータの破損が発生した場合を例示する図である。
【図６】停電処理が失敗した場合の実施形態の一例としての情報処理装置の復電時の動作を例示する図である。
【図７】停電処理が成功した場合の実施形態の一例としての情報処理装置の復電時の動作を例示する図である。
【図８】実施形態の一例としての情報処理装置における停電処理を示すタイムチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本実施の形態の一例としての制御装置、制御方法、及び制御プログラムについて説明する。
ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実行することができる。
（Ａ）構成
最初に、図１，図２（ａ）〜（ｃ）を参照して、実施形態の一例としての情報処理装置１の構成を説明する。
【００１６】
図１は、実施形態の一例としての情報処理装置（コンピュータ）１のハードウェア構成を示す図である。
情報処理装置１は、例えば不図示のストレージ装置にそなえられるストレージ制御装置（Control Module；ＣＭ）などである。
情報処理装置１は、ＣＰＵ２、メモリコントローラ３、キャッシュメモリ（第１の記憶装置）４、Magnetoresistive Random Access Memory（ＭＲＡＭ）５、ＳＡＴＡ−ＳＳＤ６、及びバックアップ制御部７（制御装置）をそなえる。
【００１７】
ＣＰＵ２は、種々の制御や演算を行なう処理装置であり、不図示のメモリ等に格納されたOperating System（ＯＳ）やプログラムを実行することにより、種々の機能を実現する。ＣＰＵ２は、例えば、公知のＣＰＵを使用して実装することができる。
メモリコントローラ３は、ＣＰＵ２と後述するキャッシュメモリ４との間、ＣＰＵ２と後述するバックアップ制御部７との間、及びキャッシュメモリ４とバックアップ制御部７との間のデータの転送を制御する。
【００１８】
キャッシュメモリ４は、ＣＰＵ２に対して読み書きされるデータを、一時的に記憶するための高速アクセスが可能なメモリである。
ここで、キャッシュメモリ４の構成について説明する。
図２（ａ）〜（ｃ）は、実施形態の一例としてのキャッシュメモリ４を示す図であり、図２（ａ）はキャッシュメモリ４内のデータの配置を、図２（ｂ）は停電時のキャッシュメモリ４のバックアップ途中の状態を、図２（ｃ）は停電時のキャッシュメモリ４へのＣＲＣコードの書き込みをそれぞれ示す。
【００１９】
図２（ａ）に示すように、通常時、キャッシュメモリ４には、ユーザデータが書き込まれるユーザデータ領域３４と、情報処理装置１の各ファームウェアコンポーネントによって管理される制御テーブルが書き込まれる制御テーブル領域３５とが存在する。
ユーザデータ領域３４には、ユーザデータの所定サイズのブロック毎に、当該ブロックのデータを保護するためのBlock Check Code（ＢＣＣ）コードが生成される。このＢＣＣコードは、メモリコントローラ３や後述するバックアップ制御部７等のファームウェアによって生成され、ユーザデータの直後に書き込まれる。
【００２０】
このように、ユーザデータ領域３４のデータはＢＣＣコードが生成されるため、これによりデータが保護される。例えば、ユーザデータ領域３４のユーザデータを、後述するＰＣＩｅ  ＩＦ制御部２１経由で読み出したときに、ＰＣＩｅ  ＩＦ制御部２１のハードウェア故障等によりデータが破損しても、ＢＣＣコードからこのデータ破損を検出することができる。なお、ＢＣＣコードの生成は、当業界で公知のＢＣＣコード生成手法によって行なわれる。
【００２１】
制御テーブル領域３５には、情報処理装置１の各種ハードウェアやファームウェアによって使用される制御テーブルが格納される。制御テーブル領域３５のデータには、ＢＣＣコードが付与されていないため、データ保護はされていない。
このため、制御テーブル領域３５のデータを、後述するＰＣＩｅ  ＩＦ制御部２１経由で読み出した場合には、ＰＣＩｅ  ＩＦ制御部２１のハードウェア故障等によりデータが破損しても、データの破損は検出されない。
【００２２】
ここで、制御テーブル領域３５のデータにＢＣＣコードを付与しない第１の理由は、制御テーブル領域３５のデータは、ユーザデータ領域３４のデータとは異なり固定ブロック長ではなく、データ長が可変であるため、ＢＣＣコードの管理が困難であるためである。第２の理由は、制御テーブル領域３５のデータは頻繁に更新されるので、データが更新される度にＢＣＣコードを生成すると、情報処理装置１の性能の低下を招くためである。
【００２３】
そこで、本実施形態の一例においては、情報処理装置１の停電時に、図２（ｂ）に示すキャッシュメモリ４のデータバックアップの後に、図２（ｃ）に示すように、制御テーブル領域３５のエラー検出用のＣＲＣコードが、制御テーブル領域３５に書き込まれる。
なお、キャッシュメモリ４としては、例えば、Static Random Access Memory（ＳＲＡＭ）を用いることができる。その際の詳細な処理については後述する。
【００２４】
ＭＲＡＭ５は、磁気を利用した不揮発性メモリであり、情報処理装置１の電源切断後も保持される管理用の各種データの保持に使用される。本実施形態においては、ＭＲＡＭ５は、比較結果８及び停電処理結果９を記憶するために使用される。
比較結果８は、後述するＣＲＣ比較部２８によるＣＲＣの比較処理の結果を示す値を格納している。例えば、比較結果８には、停電処理時にエラーが発生した場合には値‘０’が、停電処理に成功した場合には値‘１’がそれぞれ格納される。停電処理時のエラーの原因としては、例えば、PCI Express（ＰＣＩｅ）  Interface（ＩＦ）を制御する後述するＰＣＩｅ  ＩＦ制御部２１のハードウェア故障等が挙げられる。
【００２５】
停電処理結果９は、情報処理装置１のパワーオフシーケンスの結果を示す値を格納している。例えば、停電処理結果９には、パワーオフシーケンスでエラーが発生した場合には値‘０’が、パワーオフシーケンスに成功した場合には値‘１’がそれぞれ格納される。停電処理時のエラーの原因としては、情報処理装置１の部品のハードウェア故障等が挙げられる。
【００２６】
ＳＡＴＡ−ＳＳＤ６は、停電等の発生時に、キャッシュメモリ４に記憶されているデータをバックアップする先の不揮発性のメモリである。ＳＡＴＡ−ＳＳＤ６としては、公知のＳＡＴＡ−ＳＳＤを使用することができる。以降簡潔を期するために、ＳＡＴＡ−ＳＳＤ６を単にＳＳＤ６とも称する。又、以下の説明では、停電など、情報処理装置１への電力供給が絶たれる状況を総称して「停電」と呼ぶ。
【００２７】
バックアップ制御部７は、停電時に停電処理を行なうＦＰＧＡである。詳細には、バックアップ制御部７は、不図示の停電時給電部からＤＣ電力の給電を受けて、キャッシュメモリ４に格納されているデータをＳＳＤ６にバックアップし、その後ＳＳＤ６のパワーオフシーケンスを実行する。
情報処理装置１において、メモリコントローラ３とバックアップ制御部７とは、例えば４レーンのＰＣＩｅリンク１１によって接続されている。このＰＣＩｅリンク１１を介して、キャッシュメモリ４からＳＳＤ６にバックアップされるユーザデータが、キャッシュメモリ４からメモリコントローラ３経由でバックアップ制御部７に送られる。
【００２８】
又、バックアップ制御部７とＳＳＤ６とは、ＳＡＴＡリンク１２を介して接続されている。このＳＡＴＡリンク１２を介して、キャッシュメモリ４からＳＳＤ６にバックアップされるユーザデータが、バックアップ制御部７からＳＳＤ６に送られる。
バックアップ制御部７は、ＰＣＩｅ  ＩＦ制御部（経路）２１、ＳＡＴＡ  ＩＦ制御部２２、退避用Random Access Memory（ＲＡＭ）（一時記憶領域）２３、ライトＤＭＡ部（ライトＤＭＡとも称する）２４、停電シーケンス（ＳＥＱ）部２５、及びリードＤＭＡ部（リードＤＭＡとも称する）２６をそなえる。
【００２９】
ＰＣＩｅ  ＩＦ制御部２１は、メモリコントローラ３とバックアップ制御部７との間のＰＣＩｅリンク１１を介した通信を制御する処理部である。ＰＣＩｅ  ＩＦ制御部２１は、例えば回路として実施することができる。
ＳＡＴＡ  ＩＦ制御部２２は、バックアップ制御部７とＳＳＤ６との間のＳＡＴＡリンク１２を介した通信を制御する処理部である。ＳＡＴＡ  ＩＦ制御部２２は、例えば回路として実施することができる。
【００３０】
退避用ＲＡＭ２３は、後述するＣＲＣ生成部２７が、キャッシュメモリ４からリードしたデータから生成したＣＲＣコードを格納する記憶領域である。本実施形態の一例においては、退避用ＲＡＭ２３として、バックアップ制御部７のＦＰＧＡにそなえられている予備の未使用のＲＡＭを使用する。このように、予備のＲＡＭを使用することで、本実施形態の一例としての情報処理装置１の機能を実装するために、バックアップ制御部７のハードウェアの変更や追加を行なう必要がない。
【００３１】
停電シーケンス部２５は、情報処理装置１において停電が発生した際に、停電シーケンスを実行する。停電シーケンス部２５は、例えば回路として実施することができる。
本実施形態の一例においては、停電シーケンス部２５は、後述するライトＤＭＡ部２４を起動して、ライトＤＭＡ部２４にキャッシュメモリ４のデータをＳＳＤ６にバックアップさせる。その後、停電シーケンス部２５は、後述するリードＤＭＡ部２６を起動して、ＣＲＣコードをキャッシュメモリ４の制御テーブル領域３５に書き込ませる。
【００３２】
又、停電シーケンス部２５は、キャッシュ先頭アドレス３１、バックアップデータサイズ３２、及び制御テーブル先頭アドレス３３の各レジスタを有する。
キャッシュ先頭アドレス３１は、停電時にＳＳＤ６にバックアップするキャッシュメモリ４の先頭アドレスを示す値を格納する。
バックアップデータサイズ３２は、停電時にＳＳＤ６にバックアップするキャッシュメモリ４のデータサイズを示す値を格納する。
【００３３】
制御テーブル先頭アドレス３３は、キャッシュメモリ４内の制御テーブル領域３５の先頭アドレスを示す値を格納する。
キャッシュ先頭アドレス３１、バックアップデータサイズ３２、及び制御テーブル先頭アドレス３３のそれぞれの値は、例えば、停電動作時にＣＰＵ２によって設定される。
ライトＤＭＡ部２４は、メモリコントローラ３とＳＳＤ６との間で、データのダイレクトメモリアクセスによるライトを行なう処理部である。例えば、ライトＤＭＡ部２４は、キャッシュメモリ４からＳＳＤ６にバックアップするデータを、キャッシュメモリ４からメモリコントローラ３経由でＳＳＤ６にライトする。
【００３４】
ライトＤＭＡ部２４は、キャッシュメモリ４からデータをリードして、そのデータをＳＳＤ６に対してライトする。なお、ここで、ライトＤＭＡ部２４の「ライト」とは、ＳＳＤ６に対するライトを指し、キャッシュメモリ４に対してはリード動作を行なう。
本実施形態の一例においては、ライトＤＭＡ部２４は、ＣＲＣ生成部（生成部、第１の書き込み部）２７とＣＲＣ比較部（判定部）２８とをそなえる。
【００３５】
ＣＲＣ生成部２７は、停電処理時に、ＰＣＩｅ  ＩＦ制御部２１経由でキャッシュメモリ４から読み出したバックアップ対象データから、ＣＲＣコード（エラーチェック情報）を生成して、読み出したデータと共にＣＲＣコードをＳＳＤ６に書き込む（バックアップする）。
一般に、情報処理装置１内でのデータ転送においては、転送するデータ量が大きい場合、転送するデータを複数のブロックに分割して、分割したブロック単位でデータ転送が複数回に分けて行なわれる。このため、ライトＤＭＡ部２４は、バックアップするデータを、キャッシュメモリ４の先頭アドレスから順に、数回に分けてリードする。そして、ＣＲＣ生成部２７は、キャッシュメモリ４から読み出したデータのブロック毎にＣＲＣコードを生成する。その際、ＣＲＣ生成部２７は、当業界において公知のＣＲＣ生成アルゴリズムを用いてＣＲＣコードの生成を行なう。そして、キャッシュメモリ４から読み出したデータが制御テーブル領域３５に格納されていたデータである場合には、生成したＣＲＣコードを、キャッシュメモリ４のブロック毎に退避用ＲＡＭ２３に格納する。
【００３６】
ＣＲＣ比較部２８は、後述するＣＲＣチェック部２９がキャッシュメモリ４の制御テーブル領域３５に書き込んだＣＲＣコードと、ＣＲＣ生成部２７が退避用ＲＡＭ２３に退避させた対応するＣＲＣコードとを比較する。そして、ＣＲＣ比較部２８は、ＭＲＡＭ５の比較結果８に、例えば、両者が一致する場合には‘１’を、一致しない場合には値‘０’を、それぞれ設定する。
【００３７】
なお、キャッシュメモリ４の制御テーブル領域３５のＣＲＣコードと退避用ＲＡＭ２３のＣＲＣコードとの不一致の原因の１つとして、データ保護機構がないＰＣＩｅ  ＩＦ制御部２１のハードウェア故障が挙げられる。ＣＲＣチェック部２９がキャッシュメモリ４の制御テーブル領域３５に書き込むＣＲＣコードは、ＰＣＩｅ  ＩＦ制御部２１を経由して読み書きされるので、ＰＣＩｅ  ＩＦ制御部２１でハードウェア故障が発生するとデータが破損する可能性がある。一方、ＣＲＣ生成部２７が退避用ＲＡＭ２３に書き込む（退避させる）ＣＲＣコードは、ＰＣＩｅ  ＩＦ制御部２１を経由せずに読み書きされるので、ＰＣＩｅ  ＩＦ制御部２１に発生したハードウェア故障の影響を受けない。
【００３８】
ライトＤＭＡ部２４は、例えば回路として実施することができる。
リードＤＭＡ部２６は、メモリコントローラ３とＳＳＤ６との間で、データのダイレクトメモリアクセスによるリードを行なう処理部である。リードＤＭＡ部２６は、情報処理装置１の停電後の電源復旧（以下、復電と呼ぶ）時に、ＳＳＤ６にバックアップしておいたデータをキャッシュメモリ４に書き戻す。なお、ここで、リードＤＭＡ部２６の「リード」とは、ＳＳＤ６に対するライトを指し、キャッシュメモリ４に対してはリード動作を行なう。
【００３９】
又、本実施形態の一例においては、リードＤＭＡ部２６は、情報処理装置１の停電処理において、ＰＣＩｅ  ＩＦ制御部２１のハードウェアエラーの有無の判定を行なうために使用される。
このため、リードＤＭＡ部２６は、ＣＲＣチェック部２９をそなえる。
ＣＲＣチェック部２９は、ＣＲＣ生成部２７が退避用ＲＡＭ２３に格納したＣＲＣコード（例えば図４参照）を、図２（ｃ）に示すように、キャッシュメモリ４の制御テーブル領域３５のうち、ＳＳＤ６へのバックアップが既に終了した先頭の領域から順に書き込む。ＣＲＣチェック部２９がキャッシュメモリ４のバックアップ完了後に書き込んだＣＲＣコードは、その後、ライトＤＭＡ部２４のＣＲＣ比較部２８が、キャッシュメモリ４から読み出して、データ保護機構がないＰＣＩｅ  ＩＦ制御部２１を再度経由して退避させたＣＲＣコードと比較する。これにより、ＣＲＣ比較部２８は、ＰＣＩｅ  ＩＦ制御部２１のハードウェア故障等によるデータ異常の有無を検出する。
【００４０】
リードＤＭＡ部２６は、例えば回路として実施することができる。
（Ｂ）動作
以下、図３〜図７を参照して、実施形態の一例としての情報処理装置１の動作を示す。
図３は、実施形態の一例としての情報処理装置１における停電発生時の停電処理を示すフローチャート（ステップＳ１〜Ｓ１５）である。図４は、そのときの情報処理装置１の停電処理を例示する図であり、図５は、停電処理においてデータの破損が発生した場合を例示する図である。なお、図４，図５の矢印と共に示すステップ番号は、図３のステップ番号と対応している。
【００４１】
ステップＳ１において、情報処理装置１において停電が発生する。この時ＣＰＵ２が、ＳＳＤ６にデータを退避させるキャッシュメモリ４の先頭アドレス、バックアップ対象の全データサイズ、及び制御テーブル領域３５の先頭アドレスを、停電シーケンス部２５の先頭アドレス３１、バックアップデータサイズ３２、及び制御テーブル領域先頭アドレス３３の各レジスタに格納する。そして、ＣＰＵ２は、停電シーケンス部２５を起動したのち、不図示の停電時給電部のバッテリの消費を抑えるためスリープモードに入る。
【００４２】
ステップＳ２において、停電シーケンス部２５が、ライトＤＭＡ部２４を起動する。
ステップＳ３において、ライトＤＭＡ部２４が、ステップＳ１でＣＰＵ２が停電シーケンス部２５の各レジスタに格納した情報に基づいて、ＳＳＤ６にバックアップする対象のデータを、ＰＣＩｅ  ＩＦ制御部２１を介して、キャッシュメモリ４からリードする。
一般に、情報処理装置１内でのデータ転送においては、転送するデータ量が大きい場合、転送するデータを複数のブロックに分割して、分割したブロック単位でデータ転送が複数回に分けて行なわれる。このため、ライトＤＭＡ部２４は、バックアップするデータを、キャッシュメモリ４の先頭アドレスから順に、数回に分けてリードする。
【００４３】
ステップＳ４において、ライトＤＭＡ部２４のＣＲＣ生成部２７が、ステップＳ３でキャッシュメモリ４からリードしたバックアップ対象のデータからＣＲＣコードを生成する。
ステップＳ５において、ライトＤＭＡ部２４は、ステップＳ３でリードしたバックアップデータに、ステップＳ４で生成したＣＲＣコードを付加して、ＳＡＴＡ  ＩＦ制御部２２を経由して、ＳＳＤ６にライトする。
【００４４】
ステップＳ６において、ライトＤＭＡ部２４のＣＲＣ比較部２８が、ステップＳ３でリードしたキャッシュメモリ４のアドレスと、停電シーケンス部２５の制御テーブル先頭アドレス３３に格納されている値とを比較し、データが制御テーブル、ユーザデータのいずれであるかを判定する。
データが制御テーブル領域３５から読み出したデータである場合（ステップＳ６の「制御テーブル領域」ルート参照）、ステップＳ７において、ライトＤＭＡ部２４は、ＣＲＣ生成部２７が生成したＣＲＣコードを、退避用ＲＡＭ２３に格納し、その旨を停電シーケンス部２５に通知する。
【００４５】
ステップＳ７でライトＤＭＡ部２４からの通知を受けた停電シーケンス部２５は、ステップＳ８において、リードＤＭＡ部２６を起動する。
ステップＳ９において、リードＤＭＡ部２６は、ステップＳ７でライトＤＭＡ部２４が退避用ＲＡＭ２３に退避させたＣＲＣコードを退避用ＲＡＭ２３から読み出して、キャッシュメモリ４の制御テーブル領域３５の先頭アドレスにそのＣＲＣコードを書き込む（図２（ｂ）参照）。
【００４６】
一方、ステップＳ５で読み出したデータがユーザデータ領域３４から読み出したデータである場合（ステップＳ６の「ユーザデータ領域」ルート参照）、ステップＳ１０において、ライトＤＭＡ部２４は、バックアップ対象の全データのデータサイズを全て転送したかどうかを判定する。
バックアップ対象の全データを転送していない場合（ステップＳ１０のＮＯルート参照）、ライトＤＭＡ部２４は、ステップＳ３に戻って、キャッシュメモリ４の次のデータブロックに対して、ステップＳ３〜Ｓ１０の処理を繰り返す。
【００４７】
一方、バックアップ対象の全データを転送した場合（ステップＳ１０のＹＥＳルート参照）、ステップＳ１１において、ライトＤＭＡ部２４は、バックアップ対象の全データの転送が完了した旨を停電シーケンス部２５に通知する。
ステップＳ１２において、ライトＤＭＡ部２４は、ステップＳ９でキャッシュメモリ４の制御テーブル領域３５に書き込んだＣＲＣコードを、ＰＣＩｅ  ＩＦ制御部２１を介して制御テーブル領域３５から読み出す。
【００４８】
ステップＳ１３において、ライトＤＭＡ部２４のＣＲＣ比較部２８は、ステップＳ１２で読み出したＣＲＣコードを、ステップＳ７でライトＤＭＡ部２４が退避用ＲＡＭ２３に退避したＣＲＣコードと比較する。
例えば、図５に示す例では、ＰＣＩｅ  ＩＦ制御部２１のハードウェア故障等により、キャッシュメモリ４から読み出してＳＳＤ６にバックアップしたデータが破損している。図５において、破損しているデータに「×」を付す。この場合、ＰＣＩｅ  ＩＦ制御部２１を経由してキャッシュメモリ４から読み出したＣＲＣコードと、ＰＣＩｅ  ＩＦ制御部２１を経由せず退避用ＲＡＭ２３から読み出したＣＲＣコードとが不一致となる。
【００４９】
そして、ＣＲＣ比較部２８は、比較の結果を、ＭＲＡＭ５の比較結果８に設定する。なお、この図では本比較を一度しか行なっていない。しかし、ＣＲＣ生成部２７がキャッシュメモリ４の制御テーブル領域３５のデータを複数回に分けて読み出す場合には、ＣＲＣ生成部２７によるＣＲＣコードの生成及び退避用ＲＡＭ２３への書き込み、ＣＲＣチェック部２９によるキャッシュメモリ４への書き込み、並びにＣＲＣ比較部２８によるＣＲＣの比較が、複数回実行される。そして、ＣＲＣ比較部２８によるＣＲＣの比較が一度でも不一致となった場合には、不一致（ＮＧ）を示す値が、ＭＲＡＭ５の比較結果８に設定される。
【００５０】
また、ステップＳ８の後にステップＳ１４において、停電シーケンス部２５がＳＳＤ６に対してＳｔａｎｄｂｙ  Ｉｍｍｅｄｉａｔｅを発行する。Ｓｔａｎｄｂｙ  Ｉｍｍｅｄｉａｔｅについては、当業界で公知であるため、詳細な説明は省略する。
ステップＳ１５において、停電シーケンス部２５は、ステップＳ１４の停電処理の結果を、ＭＲＡＭ５の停電処理結果９に設定する。
【００５１】
図６は、停電処理が失敗した場合、図７は、停電処理が成功した場合の情報処理装置１の復電時の動作をそれぞれ例示する図である。
ステップＳ１５でＭＲＡＭ５に格納した値は、情報処理装置１の電源が復旧した際に、リードＤＭＡ部２６によって読み出され、この値に基づいてＳＳＤ６にバックアップしたデータがキャッシュメモリ４に書き戻される。
【００５２】
図６に示すように、ＭＲＡＭ５の比較結果８又は停電処理結果９に、停電処理失敗を示す値、例えば値‘０’（ＮＧ）が格納されている場合には、リードＤＭＡ部２６は、ＳＳＤ６にバックアップされているデータをキャッシュメモリ４に書き戻さない。
一方、図７に示すように、ＭＲＡＭ５の比較結果８及び停電処理結果９に、停電処理成功を示す値、例えば値‘１’（ＯＫ）が格納されている場合には、リードＤＭＡ部２６は、ＳＳＤ６にバックアップされているデータをキャッシュメモリ４に書き戻す。
【００５３】
図８は、実施形態の一例としての情報処理装置１における停電処理を示すタイムチャート（ステップＳ３１〜S３６）である。
情報処理装置１において停電が発生すると、ステップＳ３１において、ライトＤＭＡ部２４が、キャッシュメモリ４のユーザデータ領域３４のデータを、数回に分けてＳＳＤ６にバックアップする。図８の例では、５回のデータ転送が行なわれる。
【００５４】
その後、ステップＳ３２において、ライトＤＭＡ部２４は、キャッシュメモリ４の制御テーブル領域３５のデータを、数回に分けてＳＳＤ６にバックアップする。図８の例では、４回のデータ転送が行なわれる。その際、ライトＤＭＡ部２４のＣＲＣ生成部２８が、制御テーブル領域３５の各データのＣＲＣコードを生成して、退避用ＲＡＭ２３に格納する。
【００５５】
ステップＳ３３において、リードＤＭＡ部２６が、退避用ＲＡＭ２３に退避されている各ＣＲＣコードを読み出して、キャッシュメモリ４の制御テーブル領域３５に書き込む。なお、ＰＣＩ−Ｅｘｐｒｅｓｓは双方向制御が可能なため、ステップＳ３２の処理と並行してステップＳ３３の処理を行なうことができる。
そして、ステップＳ３４において、ライトＤＭＡ部２４のＣＲＣ比較部２８が、ステップＳ３２でリードＤＭＡ部２６がキャッシュメモリ４に書き込んだＣＲＣコードを読み出す。
【００５６】
そして、ステップＳ３５において、ＣＲＣ比較部２８は、そのＣＲＣコードと、ステップＳ３４で退避用ＲＡＭ２３に退避されているＣＲＣコードと比較し、比較の結果をＭＲＡＭ５の比較結果８に設定する。
ステップＳ３６において、ライトＤＭＡ部２４がＳｔａｎｄｂｙ  Ｉｍｍｅｄｉａｔｅコマンドを発行する。
（Ｃ）効果
上記の実施形態の一例においては、情報処理装置１の停電時に、ライトＤＭＡ部２４のＣＲＣ生成部２７が、キャッシュメモリ４のデータを読み出して、読み出したデータのＣＲＣコードを生成して、読み出したデータとＣＲＣコードとをＳＳＤ６にバックアップする。そして、キャッシュメモリ４から読み出したデータが制御テーブル領域３５のデータである場合には、生成したＣＲＣコードを退避用ＲＡＭ２３に退避させる。
【００５７】
次に、リードＤＭＡ部２６のＣＲＣチェック部２９が、退避用ＲＡＭ２３に退避されているＣＲＣコードをキャッシュメモリ４に書き込む。
そして、ライトＤＭＡ部２４のＣＲＣ比較部２８が、退避用ＲＡＭ２３に退避されているＣＲＣコードと、キャッシュメモリ４に書き込まれているＣＲＣコードとを比較し、両者が不一致の場合は、情報処理装置１にハードウェアエラー等が発生していると判定する。
【００５８】
これにより、本実施形態の一例においては、データ保護のためのＢＣＣコードを持たないキャッシュメモリ４の制御テーブル領域３５のデータについても、エラー検出を行なうことができる。
又、ＣＲＣ比較部２８は、エラーが発生していると判定した場合に、ＭＲＡＭ５の比較結果８に、ＣＲＣが不一致であることを示す値を設定し、情報処理装置１の復電後に、ＳＳＤ６にバックアップされたデータがキャッシュメモリ４に復元されるのを阻止する。
【００５９】
これにより、復電後に、破損したデータがキャッシュメモリ４に復元されることにより情報処理装置１のシステムダウンやデータ破壊を回避することができる。
さらに、リードＤＭＡ部２６のＣＲＣチェック部２９は、退避用ＲＡＭ２３に退避されているＣＲＣコードをキャッシュメモリ４の制御テーブル領域３５に書き込むので、既存のキャッシュメモリ４の容量を増やさずに、データの保護を提供することができる。
【００６０】
又、ＰＣＩ−Ｅｘｐｒｅｓｓは双方向制御が可能なため、ＣＲＣチェック部２９によるキャッシュメモリ４へのＣＲＣコードの書き込みとＣＲＣ生成部２７によるＳＳＤ６へのバックアップ処理とを並行して実施することができる。また、ＣＲＣ比較部２８によるＣＲＣコードのリード及び比較処理と、ＳＳＤ６へのＳｔａｎｄｂｙ  Ｉｍｍｅｄｉａｔｅ処理とを並行して実施することができる。このため、従来の停電処理性能に影響を与えることなく、既存の停電処理時間内に追加処理を行なうことが可能となる。
【００６１】
又、上記の機能は全て、バックアップ制御部７にそなえられているＲＡＭ２３やリードＤＭＡ部２６を利用して実現することができる。このため、追加の部品を必要とすることなく、バックアップ制御部７の既存のハードウェア構成を使用して、コストの上昇を招くことなく、信頼性の高い停電処理を実行することができる。
（Ｄ）その他
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００６２】
例えば、上記の実施形態の一例を、情報処理装置１の停電時のパワーオフシーケンス処理の際のデータのリード及びライトデータの保護を例に挙げて記載したが、本手法は、他の場合のデータ保護にも使用することができる。
例えば、本実施形態の一例の技術を、データ保護機能のないデータの伝送に使用することができる。
【００６３】
或いは、上記の実施形態の一例においては、図６，７に示すＭＲＡＭ５の比較結果８と停電処理結果９とがＡＮＤ条件で比較されている。すなわち、比較結果８と停電処理結果９との両方に、停電処理失敗を示す値が格納されているかどうか（図６）、或いは、比較結果８と停電処理結果９との両方に、停電処理成功を示す値が格納されているかどうか（図７）が比較されている。しかし、比較結果８と停電処理結果９とに他の比較のロジックが使用されてもよい。
【００６４】
又、上記の実施形態の一例においては、バックアップ制御部７をＦＰＧＡとして実施し、ＰＣＩｅ  ＩＦ制御部２１、ＳＡＴＡ  ＩＦ制御部２２、ライトＤＭＡ部２４、停電シーケンス部２５、及びリードＤＭＡ部２６を回路として実施する例を取り上げた。
しかし、バックアップ制御部７、ＰＣＩｅ  ＩＦ制御部２１、ＳＡＴＡ  ＩＦ制御部２２、ライトＤＭＡ部２４、停電シーケンス部２５、及びリードＤＭＡ部２６をソフトウェアとして実施してもよい。
【００６５】
その場合、情報処理装置１のＣＰＵ２が、制御プログラムを実行することにより、上述したバックアップ制御部７、ＰＣＩｅ  ＩＦ制御部２１、ＳＡＴＡ  ＩＦ制御部２２、ライトＤＭＡ部２４、停電シーケンス部２５、及びリードＤＭＡ部２６として機能するようになっている。
なお、上述したバックアップ制御部７、ＰＣＩｅ  ＩＦ制御部２１、ＳＡＴＡ  ＩＦ制御部２２、ライトＤＭＡ部２４、停電シーケンス部２５、及びリードＤＭＡ部２６としての機能を実現するための制御プログラムは、例えばフレキシブルディスク、ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等）、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等）、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から、不図示の媒体リーダーを用いてプログラムを読み取って内部記憶装置又は外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク、光ディスク、光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００６６】
上述したバックアップ制御部７、ＰＣＩｅ  ＩＦ制御部２１、ＳＡＴＡ  ＩＦ制御部２２、ライトＤＭＡ部２４、停電シーケンス部２５、及びリードＤＭＡ部２６としての機能を実現する際には、内部記憶装置（本実施形態では不図示のメモリ等）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００６７】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、該データのエラーチェック用のエラーチェック情報を生成する生成部と、
前記データと前記エラーチェック情報とを第２の記憶装置に書き込むと共に、前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込む第１の書き込み部と、
前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込む第２の書き込み部と、
前記第１の書き込み部が前記第１の記憶装置が書き込んだ前記エラーチェック情報と、前記第２の書き込み部が前記一時記憶領域に書き込んだ前記エラーチェック情報とを比較し、両者が一致しない場合に、前記経路でエラーが発生していると判定する判定部と、
をそなえることを特徴とする制御装置。
【００６８】
（付記２）
前記第１の記憶装置は、データが保護されている第１の領域と、データが保護されていない第２の領域とを有し、
前記第２の書き込み部は、前記第１の記憶装置の前記第２の領域のデータに対して前記エラーチェック情報を第１の記憶装置の前記第２の領域に書き込む
ことを特徴とする付記１記載の制御装置。
【００６９】
（付記３）
前記制御装置は、主電源の電力供給停止時に副電源から電力の供給を受けて前記生成部、前記第１の書き込み部、前記第２の書き込み部、及び判定部の処理を実行させる
ことを特徴とする付記１又は２記載の制御装置。
（付記４）
前記判定部は、前記経路でエラーが発生していると判定した場合に、前記主電源の電力復旧後の前記第２の記憶装置から前記第１の記憶装置への前記データの書き戻しを阻止させる
ことを特徴とする付記３記載の制御装置。
【００７０】
（付記５）
データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、
該データのエラーチェック用のエラーチェック情報を生成し、
前記データと前記エラーチェック情報とを第２の記憶装置に書き込み、
前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込み、
前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込み、
前記第１の記憶装置に書き込まれた前記エラーチェック情報と、前記一時記憶領域に書き込まれた前記エラーチェック情報とを比較して、両者が一致しない場合に、前記経路でエラーが発生していると判定する
ことを特徴とする制御方法。
【００７１】
（付記６）
前記第１の記憶装置は、データが保護されている第１の領域と、データが保護されていない第２の領域とを有し、
前記第１の記憶装置の前記第２の領域のデータに対して前記エラーチェック情報を第１の記憶装置の前記第２の領域に書き込む
ことを特徴とする付記５記載の制御方法。
【００７２】
（付記７）
主電源の電力供給停止時に副電源から電力の供給を受けて実行される
ことを特徴とする付記５又は６記載の制御方法。
（付記８）
前記経路でエラーが発生していると判定した場合に、前記主電源の電力復旧後の前記第２の記憶装置から前記第１の記憶装置への前記データの書き戻しを阻止させる
ことを特徴とする付記７記載の制御方法。
【００７３】
（付記９）
データ保護機能のない経路を経由して第１の記憶装置からデータを読み出し、
該データのエラーチェック用のエラーチェック情報を生成し、
前記データと前記エラーチェック情報とを第２の記憶装置に書き込み、
前記経路を経由せずに前記エラーチェック情報を一時記憶領域に書き込み、
前記エラーチェック情報を、前記経路を経由して前記第１の記憶装置に書き込み、
前記第１の記憶装置に書き込まれた前記エラーチェック情報と、前記一時記憶領域に書き込まれた前記エラーチェック情報とを比較して、両者が一致しない場合に、前記経路でエラーが発生していると判定する
処理をコンピュータに実行させることを特徴とする制御プログラム。
【００７４】
（付記１０）
前記第１の記憶装置は、データが保護されている第１の領域と、データが保護されていない第２の領域とを有し、
前記第１の記憶装置の前記第２の領域のデータに対して前記エラーチェック情報を第１の記憶装置の前記第２の領域に書き込む
処理を前記コンピュータに実行させることを特徴とする付記９記載の制御プログラム。
【００７５】
（付記１１）
前記コンピュータは、主電源の電力供給停止時に副電源から電力の供給を受けて前記制御プログラムを実行する
ことを特徴とする付記９又は１０記載の制御プログラム。
（付記１２）
前記経路でエラーが発生していると判定した場合に、前記主電源の電力復旧後の前記第２の記憶装置から前記第１の記憶装置への前記データの書き戻しを阻止させる
処理を前記コンピュータに実行させることを特徴とする付記１１記載の制御プログラム。
【符号の説明】
【００７６】
１                    情報処理装置（コンピュータ）
２                    ＣＰＵ
３                    メモリコントローラ
４                    キャッシュメモリ（第１の記憶装置）
５                    ＭＲＡＭ
６                    ＳＳＤ（第２の記憶装置）
７                    バックアップ制御部（制御装置）
８                    比較結果
９                    停電処理結果
２１                  ＰＣＩｅ  ＩＦ制御部（データ保護のない経路）
２２                  ＳＡＴＡ  ＩＦ部
２３                  退避用ＲＡＭ（一時記憶領域）
２４                  ライトＤＭＡ部
２５                  停電シーケンス部
２６                  リードＤＭＡ部
２７                  ＣＲＣ生成部（生成部、第１の書き込み部）
２８                  ＣＲＣ比較部（判定部）
２９                  ＣＲＣチェック部（第２の書き込み部）
３４                  ユーザデータ領域（第１の領域）
３５                  制御テーブル領域（第２の領域）
【図１】
2015215675.tif 000003
【図２】
2015215675.tif 000004
【図３】
2015215675.tif 000005
【図４】
2015215675.tif 000006
【図５】
2015215675.tif 000007
【図６】
2015215675.tif 000008
【図７】
2015215675.tif 000009
【図８】
2015215675.tif 000010