(57)【要約】【課題】特殊なハードウェア（冗長化装置等）を必要としないため、低コストで調達可能である一般的なハードウェア構成を採ることができる。【解決手段】データ冗長化記憶システムは、ソフトウェア３０、及びハードウェア４０により構成されている。ソフトウェア３０として、ソースコード３１ａから冗長化された機械語命令列３１ｂを生成するためのデータ冗長化コンパイラ３１が搭載されている。ハードウェア４０は、冗長化された機械語命令列３１ｂを格納する命令用記憶装置４１と、この記憶装置４１に格納された機械語命令列３１ｂに従って動作するＣＰＵ等の処理装置４２と、この処理装置４２によりアクセスされ、その動作に必要なデータを格納するデータ用記憶装置４３とを有している。処理装置４２は、命令列３１ｂを実行し、データ修復を行う。【選択図】図１
2009271879.tif 000002
【特許請求の範囲】
【請求項１】
データ書き込み命令を生成する際に、１つのデータを複数の記憶領域に書き込むという冗長な命令列を生成する機能と、
データ読み出し命令を生成する際に、複数の記憶領域からデータを読み出し、それらのデータ間の演算によって最終的な読み出しデータを決定するという冗長な命令列を生成する機能と、
を有することを特徴とするデータ冗長化コンパイラ。
【請求項２】
前記最終的な読み出しデータは、前記データ間におけるビット毎の多数決演算処理により決定することを特徴とする請求項１記載のデータ冗長化コンパイラ。
【請求項３】
請求項１又は２記載のデータ冗長化コンパイラは、更に、
前記冗長な命令列の生成の有無を、前記データの記憶領域毎に制御する機能を有することを特徴とするデータ冗長化コンパイラ。
【請求項４】
前記制御する機能は、利用者に指定された又は利用者に指定されなかった特定のデータに対する前記冗長な命令列の生成を抑制する機能であることを特徴とする請求項３記載のデータ冗長化コンパイラ。
【請求項５】
請求項１又は２記載のデータ冗長化コンパイラにより、ソースコードを解釈して翻訳された前記冗長な命令列を、格納する不揮発性の第１の記憶装置と、
揮発性の第２の記憶装置と、
前記第１の記憶装置に格納された前記冗長な命令列に従って動作し、前記動作に必要なデータを冗長化して冗長化データを前記第２の記憶装置に書き込み、且つ、前記第２の記憶装置に書き込まれた前記冗長化データを読み出し、前記読み出したデータ間の演算によって決定した前記最終的な読み出しデータに基づく動作を行う処理装置と、
を備えたことを特徴とするデータ冗長化記憶システム。
【請求項６】
請求項３又は４記載のデータ冗長化コンパイラにより、ソースコードを解釈して翻訳された前記冗長な命令列を、格納する不揮発性の第１の記憶装置と、
揮発性の第２の記憶装置と、
ノイズ侵入防止機能を有する揮発性の第３の記憶装置と、
前記第１の記憶装置に格納された前記冗長な命令列に従って動作し、前記動作に必要なデータを冗長化して冗長化データを前記第２の記憶装置に書き込む機能と、前記第２の記憶装置に書き込まれた前記冗長化データを読み出し、前記読み出したデータ間の演算によって決定した前記最終的な読み出しデータに基づく動作を行う機能と、前記動作に必要なデータを冗長化せずに前記第３の記憶装置に書き込み且つ読み出して動作する機能とを有する処理装置と、
を備えたことを特徴とするデータ冗長化記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、宇宙空間や自動車のエンジン内部等、ノイズの多い環境下において、記憶装置のデータ破損を防ぐための機能を持つコンパイラ及びそれを用いたデータ冗長化記憶システムに関するものである。
【背景技術】
【０００２】
従来、あるデータを揮発性の記憶装置に記憶する場合、データ化け等の異常を防止するために、１つのデータを複数の記憶領域に記憶させ、その複数の記憶領域のデータに基づいて正規のデータを取得できるようにしたデータ冗長化記憶システムの技術が、例えば、次のような文献等に開示されている。
【０００３】
【特許文献１】特開２００２−５５８８５号公報
【０００４】
この特許文献１では、複数の記憶領域のデータに対して多数決により正規のデータを取得し、データ化け等をした異常データを修復するデータ修復装置であるデータ冗長化記憶システムが開示されている。
【０００５】
図６は、従来の一般的なデータ記憶システムを示す概略の構成図である。
このデータ記憶システムは、ソフトウェア１０、及びハードウェア２０により構成されている。ソフトウェア１０として、例えば、高級言語で書かれたコンパイラ１１が搭載されている。コンパイラ１１は、ソースコード１１ａを解釈して機械語命令列１１ｂに翻訳するプログラムである。ハードウェア２０は、機械語命令列１１ｂを格納する不揮発性の命令用記憶装置２１と、この命令用記憶装置２１に格納された機械語命令列１１ｂに従って動作するＣＰＵ（中央処理装置）等の処理装置２２と、この処理装置２２によりアクセスされ、その動作に必要なデータを格納する揮発性のデータ用記憶装置２３とを有している。
【０００６】
このような構成のデータ記憶システムにおいて、利用者はコンパイラ１１を用いてソースコード１１ａから機械語命令列１１ｂを生成し、命令用記憶装置２１に格納する。処理装置２２は、命令用記憶装置２１に格納された機械語命令列１０ｂに従って動作を行うが、その際、動作に必要なデータをデータ用記憶装置２３に格納する。
【０００７】
しかし、データ用記憶装置２３は、α線等のノイズＮＳに曝されると、保持している値が変化（破損）してしまう場合がある。この場合、処理装置２２は、破損した値を読み出して、この値に基づく動作を行うため、誤動作を引き起こすという問題がある。
【０００８】
図７は、前記問題を解決するために、従来採用されていたデータ冗長化記憶システムの例を示す概略の構成図である。更に、図８は、図７のデータ冗長化記憶システムで行われる多数決による修復を説明するための図である。
【０００９】
図７のデータ冗長化記憶システムでは、処理装置２２とデータ用記憶装置２３との間に冗長化装置２４が設けられている。そして、処理装置２２が値をデータ用記憶装置２３に書き込む場合、冗長化装置２４は、特許文献１の技術とほぼ同様に、データ用記憶装置２３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に同じ値を書き込む。処理装置２２がデータ用記憶装置２３から値を読み出す場合、冗長化装置２４は、データ用記憶装置２３から３箇所の領域Ｘ，Ｘ’，Ｘ’’の値を全て読み出して、この３つの値の間でビット毎の多数決を取る。これにより、もし値が破損していても、破損前の値を修復することができる。その後、冗長化装置２４は処理装置２２に修復した値を渡す。
【００１０】
図８を参照しつつ、図７のデータ冗長化記憶システムの動作を具体的に説明する。
例えば、処理装置２２が値０ｘ１２３４をデータ用記憶装置２３中の領域Ｘに書き込もうとしたとする。冗長化装置２４は、値０ｘ１２３４を、データ用記憶装置２３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に書き込む。その後、領域Ｘ’がノイズＮＳによって０ｘ１２３５に変化（破損）したとする。又、領域Ｘ’’がノイズＮＳによって０ｘ１０３４に変化（破損）したとする。この時点で、処理装置２２が領域Ｘを読み出そうとしたとする。
【００１１】
すると、冗長化装置２４は、データ用記憶装置２３から３箇所の領域Ｘ，Ｘ’，Ｘ’’の値（Ｘ：０ｘ１２３４，Ｘ’：０ｘ１２３５，Ｘ’’：０ｘ１０３４）全てを読み出し、ビット毎の多数決を取ることによって、修復された値０ｘ１２３４を得る。その後、冗長化装置２４は、修復した値０ｘ１２３４を処理装置２２に渡す。これにより、データ用記憶装置２３にて値の破損が発生しても、処理装置２２の誤動作を防ぐことができる。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来の図７や特許文献１のようなデータ冗長化記憶システムでは、特殊なハードウェア（冗長化装置）等を必要とするため、低コストで調達可能である一般的なハードウェア構成を採ることができないという課題があった。
【課題を解決するための手段】
【００１３】
本発明のうちの、第１の発明のデータ冗長化コンパイラでは、データ書き込み命令を生成する際に、１つのデータを複数の記憶領域に書き込むという冗長な命令列を生成する機能と、データ読み出し命令を生成する際に、複数の記憶領域からデータを読み出し、それらのデータ間の演算によって最終的な読み出しデータを決定するという冗長な命令列を生成する機能とを有している。
【００１４】
第２の発明のデータ冗長化コンパイラでは、前記第１の発明の機能の他に、更に、前記冗長な命令列の生成の有無を、前記データの記憶領域毎に制御する機能を有している。
【００１５】
第３の発明のデータ冗長化記憶システムでは、前記第１の発明のデータ冗長化コンパイラにより、ソースコードを解釈して翻訳された前記冗長な命令列を、格納する不揮発性の第１の記憶装置と、揮発性の第２の記憶装置と、処理装置とを備えている。前記処理装置は、前記第１の記憶装置に格納された前記冗長な命令列に従って動作し、前記動作に必要なデータを冗長化して冗長化データを前記第２の記憶装置に書き込み、且つ、前記第２の記憶装置に書き込まれた前記冗長化データを読み出し、前記読み出したデータ間の演算によって決定した前記最終的な読み出しデータに基づく動作を行う装置である。
【００１６】
第４の発明のデータ冗長化記憶システムでは、前記第２の発明のデータ冗長化コンパイラにより、ソースコードを解釈して翻訳された前記冗長な命令列を、格納する不揮発性の第１の記憶装置と、揮発性の第２の記憶装置と、ノイズ侵入防止機能を有する揮発性の第３の記憶装置と、処理装置とを備えている。前記処理装置は、前記第１の記憶装置に格納された前記冗長な命令列に従って動作し、前記動作に必要なデータを冗長化して冗長化データを前記第２の記憶装置に書き込む機能と、前記第２の記憶装置に書き込まれた前記冗長化データを読み出し、前記読み出したデータ間の演算によって決定した前記最終的な読み出しデータに基づく動作を行う機能と、前記動作に必要なデータを冗長化せずに前記第３の記憶装置に書き込み且つ読み出して動作する機能とを有している。
【発明の効果】
【００１７】
第１及び第３の発明によれば、従来のような特殊な冗長化装置等を必要としないため、低コストで調達可能である一般的なハードウェア構成を採ることができる。しかも、ソフトウェアのソースコードを変更する必要が無いという効果も得られる。
【００１８】
第２及び第４の発明によれば、例えば、実行時間の制約の厳しい処理に関わる特定のデータを高速データとすることにより、リアルタイムシステムの設計が容易となる。又、ノイズ侵入防止機能を第３の記憶装置のみに限って設ければよいため、全ての記憶装置に対して保護を行う場合に比べ、ハードウェア製造コストが抑えられるという効果もある。
【発明を実施するための最良の形態】
【００１９】
本発明を実施するための最良の形態は、以下の好ましい実施例の説明を添付図面と照らし合わせて読むと、明らかになるであろう。但し、図面はもっぱら解説のためのものであって、本発明の範囲を限定するものではない。
【実施例１】
【００２０】
（実施例１の構成）
図１は、本発明の実施例１におけるデータ冗長化記憶システムを示す概略の構成図である。
【００２１】
このデータ冗長化記憶システムは、ソフトウェア３０、及びハードウェア４０により構成されている。ソフトウェア３０として、例えば、Ｃ言語等の高級言語で書かれたデータ冗長化コンパイラ３１が搭載されている。データ冗長化コンパイラ３１は、ソースコード３１ａから冗長化された機械語命令列３１ｂを生成する機能を有するプログラムである。ハードウェア３０は、従来の冗長化装置を廃した一般的な構成のものであり、冗長化された機械語命令列３１ｂを格納するマスクＲＯＭ（リード・オンリ・メモリ）等の不揮発性の第１の記憶装置（例えば、命令用記憶装置）４１と、この命令用記憶装置４１に格納された機械語命令列３１ｂに従って動作するＣＰＵ等の処理装置４２と、この処理装置４２によりアクセスされ、その動作に必要なデータを格納するＲＡＭ（ランダム・アクセス・メモリ）等の揮発性の第２の記憶装置（例えば、データ用記憶装置）４３とを有している。処理装置４２内には、データを一時格納するための複数のレジスタ０，１，２等が設けられている。
【００２２】
（実施例１の動作）
図１のデータ冗長化記憶システムにおいて、例えば、値Ａをデータ用記憶装置４３に書き込む命令を生成する必要がある場合、データ冗長化コンパイラ３１は、データ用記憶装置４３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に同じ値Ａを書き込むという、冗長化された機械語命令列３１ｂを生成する。又、値をデータ用記憶装置４３から読み出す命令を生成する必要がある場合、データ冗長化コンパイラ３１は、データ用記憶装置４３から３箇所の領域Ｘ，Ｘ’，Ｘ’’の値を全て読み出して、その３つの値の間で演算を行う（例えば、ビット毎の多数決を取る）という、冗長化された機械語命令列３１ｂを生成する。生成された機械語命令列３１ｂは、命令用記憶装置４１に格納される。
【００２３】
処理装置４２は、命令用記憶装置４１に格納された機械語命令列３１ｂを実行すると、従来の冗長化装置を用いた場合と同様のデータ修復を行うことができる。即ち、処理装置４２は、命令用記憶装置４１に格納された機械語命令列３１ｂに従って動作を行うが、その際、動作に必要なデータを冗長化してデータ用記憶装置４３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に同じ値Ａを書き込む。処理装置４２はデータ用記憶装置４３から値を読み出す場合、データ用記憶装置４３から３箇所の領域Ｘ，Ｘ’，Ｘ’’の値（つまり、冗長化されたデータ）を全て読み出して、この３つの値の間でビット毎の多数決を取る。これにより、もし値が破損していても、破損前の値を修復することができる。その後、処理装置４２は、修復された値に基づいて所定の動作を行う。
【００２４】
図２は、図１のデータ冗長化記憶システムにおける具体的な動作例を示す図である。この動作例では、図２に示される（１）〜（１１）の処理が以下の（ａ）〜（ｅ）のように実行される。
【００２５】
（ａ）  例えば、ソースコード３１ａ中に「値０ｘ１２３４をデータ用記憶装置４３中の領域Ｘに書き込み、なんらかの処理の後に領域Ｘを読み出す」という制御があるとする。データ冗長化コンパイラ３１は、この制御を、図２に示すような命令列に展開する。
（ｂ）  処理装置４２は、図２の（１）〜（３）に示された書き込み処理を実行する。すると、従来の冗長化装置を用いた場合と同様に、値０ｘ１２３４がデータ用記憶装置４３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に書き込まれる。
（ｃ）  その後、処理装置４２が図２中の「なんらかの処理」を行っている間に、領域Ｘ’の値がノイズＮＳによって０ｘ１２３５に変化（破損）したとする。又、領域Ｘ’’の値がノイズＮＳによって０ｘ１０３４に変化（破損）したとする。
（ｄ）  処理装置４２は（４）〜（６）に示された保存処理を実行する。すると、領域Ｘ，Ｘ’，Ｘ’’の値が、処理装置４２内のレジスタ０，１，２にそれぞれ格納される。
（ｅ）  処理装置４２は（７）〜（１１）に示された排他的論理和演算（ＸＯＲ）、論理積演算（ＡＮＤ）、反転演算（ＮＯＴ）、論理積演算（ＡＮＤ）、及び論理和演算（ＯＲ）の処理（即ち、多数決処理）を実行する。すると、レジスタ０に、多数決によって修復された値が得られる。
【００２６】
（実施例１の効果）
本実施例１によれば、従来のような特殊な冗長化装置等を必要としないため、低コストで調達可能である一般的なハードウェア構成を採ることができる。しかも、ソフトウェア３０のソースコード３１ａを変更する必要が無いという効果も得られる。
【実施例２】
【００２７】
（実施例２の構成）
図３は、本発明の実施例２におけるデータ冗長化記憶システムを示す概略の構成図である。
【００２８】
本実施例２のデータ冗長化記憶システムは、実施例１のソフトウェア３０とは機能の異なるソフトウェア５０と、実施例１のハードウェア４０とは構成の異なるハードウェア６０とにより構成されている。
【００２９】
ソフトウェア５０として、例えば、Ｃ言語等の高級言語で書かれたデータ冗長化コンパイラ５１が搭載されている。データ冗長化コンパイラ５１は、実施例１とほぼ同様に、ソースコード５１ａから冗長化された機械語命令列５１ｂを生成する機能を有する他に、新たに、システム利用者に指定された特定のデータ（以下「高速データ」という。）に対する冗長命令列の生成を抑制する機能が追加されている。高速データの指定は、例えば、キーワードやプラグマ（ｐｒａｇｍａ）等によって行われる。プラグマとは、データ冗長化コンパイラ５１に特定の情報を渡すために使用するコンパイラ命令であり、このプラグマを使用すると、コンパイル内容を詳細にわたって制御することが可能になる。
【００３０】
ハードウェア６０は、従来の冗長化装置を廃したものであり、実施例１とほぼ同様に、冗長化された機械語命令列５１ｂを格納するマスクＲＯＭ等の不揮発性の第１の記憶装置（例えば、命令用記憶装置）６１と、複数のレジスタ等を持ち、命令用記憶装置６１に格納された機械語命令列５１ｂに従って動作するＣＰＵ等の処理装置６２と、この処理装置６２によりアクセスされ、その動作に必要なデータを格納するＲＡＭ等の揮発性の第２の記憶装置（例えば、データ用記憶装置）６３とを有する他に、新たに、電磁シールド等によってノイズＮＳから保護された揮発性の第３の記憶装置（例えば、データ格納用記憶装置である高速データ用記憶装置）６４が追加されている。この高速データ用記憶装置６４に対しては、処理装置６２により、冗長化されていない通常のデータの書き込み及び読み出しが行われる。この高速データ用記憶装置６４においては、ノイズＮＳによるデータの破損は発生しないものとする。
【００３１】
（実施例２の動作）
図４は、図３のデータ冗長化コンパイラ５１の例を示す図である。
このデータ冗長化コンパイラ５１は、キーワード”__ｆａｓｔ”を持つＣコンパイラであるとする。このキーワード”＿ｆａｓｔ”を指定された領域（例えば、高速データ用記憶装置６４の領域Ｙ）に対するアクセス（例えば、読み出し）には、データ冗長化コンパイラ５１は冗長な命令列の生成が抑制される。キーワード”__ｆａｓｔ”を指定されない領域（例えば、データ用記憶装置６３の領域Ｘ）に対するアクセス（例えば、読み出し）には、データ冗長化コンパイラ５１は冗長な命令列（例えば、データ用記憶装置６３の領域Ｘ，Ｘ’，Ｘ’’からの読み出しと多数決処理）を生成する。そのため、システム利用者は、高速データを高速データ用記憶装置６４に配置することにより、冗長性の無い高速なアクセスを行うことが可能になる。この動作の具体的な例を以下説明する。
【００３２】
図３のデータ冗長化記憶システムにおいて、例えば、値Ａを、キーワード”__ｆａｓｔ”を指定されないデータ用記憶装置６３に書き込む命令を生成する必要がある場合、データ冗長化コンパイラ５１は、データ用記憶装置６３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に同じ値Ａを書き込むという、冗長化された機械語命令列５１ｂを生成する。又、値を、キーワード”__ｆａｓｔ”を指定されないデータ用記憶装置６３から読み出す命令を生成する必要がある場合、データ冗長化コンパイラ６１は、データ用記憶装置６３から３箇所の領域Ｘ，Ｘ’，Ｘ’’の値を全て読み出して、その３つの値の間で演算を行う（例えば、ビット毎の多数決を取る）という、冗長化された機械語命令列６１ｂを生成する。
【００３３】
これに対し、値Ｂを、キーワード”__ｆａｓｔ”を指定された高速データ用記憶装置６４に書き込む命令を生成する必要がある場合、データ冗長化コンパイラ５１は、高速データ用記憶装置６４中の領域Ｙに値Ｂを書き込むという、冗長化されない機械語命令列５１ｂを生成する。又、値を、キーワード”__ｆａｓｔ”を指定された高速データ用記憶装置６４から読み出す命令を生成する必要がある場合、データ冗長化コンパイラ６１は、高速データ用記憶装置６４から領域Ｙの値を読み出すという、冗長化されない機械語命令列５１ｂを生成する。このようにして生成された機械語命令列５１ｂは、命令用記憶装置６１に格納される。
【００３４】
処理装置６２は、命令用記憶装置６１に格納された機械語命令列５１ｂに従って動作を行うが、その際、キーワード”＿ｆａｓｔ”を指定されないデータ用記憶装置６３に対するアクセスの場合は、動作に必要なデータを冗長化してデータ用記憶装置６３中の３箇所の領域Ｘ，Ｘ’，Ｘ’’に同じ値Ａを書き込む。処理装置６２はデータ用記憶装置６３から値を読み出す場合、実施例１と同様に、データ用記憶装置６３から３箇所の領域Ｘ，Ｘ’，Ｘ’’の値（つまり、冗長化されたデータ）を全て読み出して、この３つの値の間でビット毎の多数決を取る。これにより、もし値が破損していても、破損前の値を修復することができる。その後、処理装置６２は、修復された値に基づいて所定の動作を行う。
【００３５】
一方、キーワード”__ｆａｓｔ”を指定された高速データ用記憶装置６４に対するアクセスの場合は、動作に必要なデータを冗長化せずに高速データ用記憶装置６４中の領域Ｙに値Ｂを書き込む。処理装置６２は高速データ用記憶装置６４から値を読み出す場合、高速データ用記憶装置６４から領域Ｙの値を読み出し、この値に基づいて所定の動作を行う。これにより、冗長性の無い高速なアクセスを行うことができる。
【００３６】
（実施例２の効果）
本実施例２によれば、システム利用者は、実行時間の制約の厳しい処理に関わるデータを高速データとすることにより、リアルタイムシステムの設計が容易となる。又、電磁シールド等による保護を、高速データ用記憶装置６４のみに限って設ければよいため、全ての記憶装置に対して保護を行う場合に比べ、ハードウェア製造コストが抑えられるという効果もある。
【００３７】
（変形例）
本発明は、上記実施例に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）、（ｂ）のようなものがある。
（ａ）  図５は、図４のデータ冗長化コンパイラ５１に対する変形例を示す図である。
実施例２では、キーワードやプラグマ等による指示を与えたデータを高速データとする、として説明を行ったが、逆に、キーワードやプラグマ等による指示を与え”なかった”データを高速データとする、という変形例も考えられる。例として、図５では、”__ｎｏ＿ｆａｓｔ”キーワードを指定されたデータに対してのみ、冗長命令列が生成されている。これにより、実施例２とほぼ同様の作用効果を奏することができる。
（ｂ）  ソフトウェア３０，５０及びハードウェア４０，６０は、図示以外の構成に変更したり、あるいは、他の構成要素を付加する等してもよい。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施例１におけるデータ冗長化記憶システムを示す概略の構成図である。
【図２】図１のデータ冗長化記憶システムにおける具体的な動作例を示す図である。
【図３】本発明の実施例２におけるデータ冗長化記憶システムを示す概略の構成図である。
【図４】図３のデータ冗長化コンパイラ５１の例を示す図である。
【図５】図４のデータ冗長化コンパイラ５１に対する変形例を示す図である。
【図６】従来の一般的なデータ記憶システムを示す概略の構成図である。
【図７】前記問題を解決するために、従来採用されていたデータ冗長化記憶システムの例を示す概略の構成図である。
【図８】図７のデータ冗長化記憶システムで行われる多数決による修復を説明するための図である。
【符号の説明】
【００３９】
３０，５０      ソフトウェア
３１，５１      データ冗長化コンパイラ
３１ａ，５１ａ      ソースコード
３１ｂ，５１ｂ      機械語命令列
４０，６０      ハードウェア
４１，６１      命令用記憶装置
４２，６２      処理装置
４３，６３      データ用記憶装置
６４      高速データ用記憶装置
【図１】
2009271879.tif 000003
【図２】
2009271879.tif 000004
【図３】
2009271879.tif 000005
【図４】
2009271879.tif 000006
【図５】
2009271879.tif 000007
【図６】
2009271879.tif 000008
【図７】
2009271879.tif 000009
【図８】
2009271879.tif 000010