(57)【要約】【課題】セクタサイズが大きい場合であっても、少ないメモリ容量でデータの送受を行うことができる記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラムを提供すること。【解決手段】リード処理を行う場合に、ドライブ部から読み出したセクタデータをサブセクタデータに分割し、サブセクタデータごとに誤り検査用の符号を付与してバッファに格納し、バッファから読み出したサブセクタデータをメモリに格納して検査処理を行った後に、サブセクタデータが転送サイズに達した場合に、メモリ内のデータをホスト装置へ送信する。【選択図】図１
2010267164.tif 000002
【特許請求の範囲】
【請求項１】
ホストとの間で所定の転送サイズごとにデータを送受する記憶装置であって、
データをセクタ単位に記憶するドライブ部と、
リード処理を行う場合に、前記ドライブ部からセクタ単位に読み出したデータであるセクタデータを検査する第一の検査部と、
前記第一の検査部によって検査されたセクタデータを前記セクタよりも小さいサイズであるサブセクタ単位に分割する分割部と、
前記分割部によって分割されたサブセクタデータごとに誤り検査用の符号を付与する付与部と、
前記付与部によって誤り検査用の符号が付与されたサブセクタデータを記憶するバッファから読み出されたサブセクタデータを、所定のメモリに格納し、前記付与部によって付与された誤り検査用の符号を用いて検査する第二の検査部と、
前記メモリから、前記第二の検査部によって検査されたサブセクタデータを読み出して前記転送サイズごとに前記ホストへ送信する送信部と
を備えたことを特徴とする記憶装置。
【請求項２】
前記付与部は、サブセクタデータごとに誤り訂正用の符号を付与し、
前記第二の検査部は、前記誤り検査用の符号を用いた検査の結果がエラーである場合に、前記付与部によって付与された誤り訂正用の符号を用いて、前記サブセクタデータを訂正することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記第二の検査部は、ライト処理を行う場合に、前記ホストから受け付けたデータをサブセクタ単位に分割し、分割したサブセクタデータごとに誤り検査用の符号を付与し、
前記第一の検査部は、前記第二の検査部によって誤り検査用の符号が付与されたサブセクタデータを記憶するバッファから読み出されたサブセクタデータを、前記第二の検査部によって付与された誤り検査用の符号を用いて検査した後に前記ドライブ部に格納することを特徴とする請求項１または２に記載の記憶装置。
【請求項４】
前記第二の検査部は、分割したサブセクタデータごとに誤り訂正用の符号を付与し、
前記第一の検査部は、前記誤り検査用の符号を用いた検査の結果がエラーである場合に、前記第二の検査部によって付与された誤り訂正用の符号を用いて、前記サブセクタデータを訂正することを特徴とする請求項３に記載の記憶装置。
【請求項５】
前記第一の検査部は、データのライト処理を行う場合に、検査後のサブセクタデータから前記第二の検査部によって付与された誤り検査用の符号および誤り訂正用の符号を除去した後に、サブセクタデータを結合してセクタ単位にデータを前記ドライブ部に格納することを特徴とする請求項４に記載の記憶装置。
【請求項６】
ホストとの間で所定の転送サイズごとにデータを送受する記憶装置を制御するデータ転送制御装置であって、
リード処理を行う場合に、データをセクタ単位に記憶するドライブ部からセクタ単位に読み出したデータであるセクタデータを検査する第一の検査部と、
前記第一の検査部によって検査されたセクタデータを前記セクタよりも小さいサイズであるサブセクタ単位に分割する分割部と、
前記分割部によって分割されたサブセクタデータごとに誤り検査用の符号を付与する付与部と、
前記付与部によって誤り検査用の符号が付与されたサブセクタデータを記憶するバッファから読み出されたサブセクタデータを、所定のメモリに格納し、前記付与部によって付与された誤り検査用の符号を用いて検査する第二の検査部と、
前記メモリから、前記第二の検査部によって検査されたサブセクタデータを読み出して前記転送サイズごとに前記ホストへ送信する送信部と
を備えたことを特徴とするデータ転送制御装置。
【請求項７】
ホストとの間で所定の転送サイズごとにデータを送受する記憶装置によるデータ転送方法であって、
前記記憶装置が、
リード処理を行う場合に、データをセクタ単位に記憶するドライブ部からセクタ単位に読み出したデータであるセクタデータを検査する第一の検査ステップと、
前記第一の検査ステップによって検査されたセクタデータを前記セクタよりも小さいサイズであるサブセクタ単位に分割する分割ステップと、
前記分割ステップによって分割されたサブセクタデータごとに誤り検査用の符号を付与する付与ステップと、
前記付与ステップによって誤り検査用の符号が付与されたサブセクタデータを記憶するバッファから読み出されたサブセクタデータを、所定のメモリに格納し、前記付与ステップによって付与された誤り検査用の符号を用いて検査する第二の検査ステップと、
前記メモリから、前記第二の検査ステップによって検査されたサブセクタデータを読み出して前記転送サイズごとに前記ホストへ送信する送信ステップと
を含んだことを特徴とするデータ転送方法。
【請求項８】
ホストとの間で所定の転送サイズごとにデータを送受するデータ転送プログラムであって、
リード処理を行う場合に、データをセクタ単位に記憶するドライブ部からセクタ単位に読み出したデータであるセクタデータを検査する第一の検査手順と、
前記第一の検査手順によって検査されたセクタデータを前記セクタよりも小さいサイズであるサブセクタ単位に分割する分割手順と、
前記分割手順によって分割されたサブセクタデータごとに誤り検査用の符号を付与する付与手順と、
前記付与手順によって誤り検査用の符号が付与されたサブセクタデータを記憶するバッファから読み出されたサブセクタデータを、所定のメモリに格納し、前記付与手順によって付与された誤り検査用の符号を用いて検査する第二の検査手順と、
前記メモリから、前記第二の検査手順によって検査されたサブセクタデータを読み出して前記転送サイズごとに前記ホストへ送信する送信手順と
をコンピュータに実行させることを特徴とするデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラムに関する。
【背景技術】
【０００２】
従来、大規模なコンピュータシステムなどでは、複数のディスクを搭載するストレージ装置が用いられている。ストレージ装置は、一般に、セクタ単位にデータの読み出しや書き込みを行う。具体的には、ストレージ装置は、ライト処理を行う場合に、ホスト装置から受け付けたデータをセクタサイズに分割して、分割したデータごとに誤り検出用の符号などを付与してディスクに書き込む。また、ストレージ装置は、リード処理を行う場合に、ディスクからセクタ単位でデータを読み出し、読み出したデータに対して誤り検出用の符号を用いた検査を行い、検査後のデータをホスト装置へ送信する。
【０００３】
図１０を用いて、従来のストレージ装置によるデータの送受処理について説明する。図１０は、従来のストレージ装置によるデータの送受処理の一例を示す図である。図１０に示した例において、従来のストレージ装置９００は、ドライブ部９０１と、メモリ９０２とを有する。ドライブ部９０１は、例えば、磁気ディスク等の記憶デバイスであり、各種データを記憶する。メモリ９０２は、例えば、ＦＩＦＯ（First  In  First  Out）方式によりデータ管理を行う記憶デバイスである。
【０００４】
図１０に示した例において、ホスト装置１とストレージ装置９００との間で送受されるデータの転送サイズは、１０２４［Ｂｙｔｅ］に決められているものとする。また、１個のセクタのサイズは、５１２［Ｂｙｔｅ］であるものとする。
【０００５】
このような条件の下、ストレージ装置９００は、ライト処理を行う場合に、ホスト装置１から受け付けたデータをメモリ９０２に格納する。ここでは、データの転送サイズが１０２４［Ｂｙｔｅ］であるので、ストレージ装置９００は、メモリ９０２に１０２４［Ｂｙｔｅ］のデータを格納することになる。そして、ストレージ装置９００は、メモリ９０２に記憶されているデータをセクタサイズごとに分割し、分割したセクタデータごとに誤り検出用の符号などを付与して、所定のバッファに格納する。そして、ストレージ装置９００は、バッファに格納したセクタデータに対して検査処理等を行った後に、検査後のセクタデータをドライブ部９０１に格納する。ここでは、セクタサイズが５１２［Ｂｙｔｅ］であるので、ストレージ装置９００は、メモリ９０２に記憶されているデータを２個のセクタデータに分割してドライブ部９０１に格納する。
【０００６】
また、ストレージ装置９００は、リード処理を行う場合に、ドライブ部９０１からセクタ単位でデータを読み出す。そして、ストレージ装置９００は、読み出したセクタデータを所定のバッファに格納した後にメモリ９０２に格納し、かかるデータに対して検査処理等を行う。そして、ストレージ装置９００は、メモリ９０２に格納したデータが転送サイズに達した場合に、メモリ９０２内のデータをホスト装置へ送信する。ここでは、セクタサイズが５１２［Ｂｙｔｅ］であり、データの転送サイズが１０２４［Ｂｙｔｅ］であるので、ストレージ装置９００は、検査後のセクタデータをメモリ９０２に２個格納した場合に、メモリ９０２内のデータをホスト装置へ送信する。
【０００７】
このように、ストレージ装置９００は、検査処理後のデータをホスト装置１へ送信することにより、誤りが存在するデータをホスト装置１へ送信してしまうことを防止している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−３５４６５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、近年では、データ訂正能力の向上や、記録容量の増大を目的として、セクタサイズを拡大する傾向にある。しかしながら、上述した従来技術には、セクタサイズを拡大すると、多くのメモリ容量を用いるという問題があった。
【００１０】
かかる問題点について、図１０に示した例を用いて説明する。なお、ここでは、上記例と同様に、セクタサイズが５１２［Ｂｙｔｅ］であり、データの転送サイズが１０２４［Ｂｙｔｅ］であるものとする。上述したように、従来のストレージ装置９００は、リード処理を行う場合に、セクタデータをメモリ９０２に格納して検査処理を行い、メモリ９０２に格納したデータが転送サイズに達した場合にデータを送信する。すなわち、上記例において、メモリ９０２のサイズは、少なくとも１０２４［Ｂｙｔｅ］以上であることが求められる。
【００１１】
なお、システムにもよるが、一般に、セクタサイズが５１２［Ｂｙｔｅ］であり、転送サイズが１０２４［Ｂｙｔｅ］である場合、メモリ９０２のサイズは、マージンを持たせるために、５１２［Ｂｙｔｅ］に３を乗算した１５３６［Ｂｙｔｅ］などに設計される。
【００１２】
ここで、例えば、セクタのサイズを４［ＫＢ］（４０９６［Ｂｙｔｅ］）に拡大した場合、従来のストレージ装置９００は、リード処理時に、４［ＫＢ］のセクタデータをメモリ９０２に格納して検査処理を行うことになる。すなわち、メモリ９０２のサイズは、少なくとも４［ＫＢ］以上であることが求められる。上述したように、メモリ９０２のサイズは、一般にマージンを持たせるので、４［ＫＢ］に２を乗算した８［ＫＢ］などに設計されることが考えられる。
【００１３】
このように、従来のストレージ装置を用いた場合、セクタサイズの拡大に伴って、メモリ容量も増大することになる。このことは、メモリを増設することになるので、ストレージ装置の価格が上昇してしまうという問題を招く。
【００１４】
開示の技術は、上記に鑑みてなされたものであって、セクタサイズが大きい場合であっても、少ないメモリ容量でデータの送受を行うことができる記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本願の開示する記憶装置は、一つの態様において、ホストとの間で所定の転送サイズごとにデータを送受する記憶装置であって、データをセクタ単位に記憶するドライブ部と、リード処理を行う場合に、前記ドライブ部からセクタ単位に読み出したデータであるセクタデータを検査する第一の検査部と、前記第一の検査部によって検査されたセクタデータを前記セクタよりも小さいサイズであるサブセクタ単位に分割する分割部と、前記分割部によって分割されたサブセクタデータごとに誤り検査用の符号を付与する付与部と、前記付与部によって誤り検査用の符号が付与されたサブセクタデータを記憶するバッファから読み出されたサブセクタデータを、所定のメモリに格納し、前記付与部によって付与された誤り検査用の符号を用いて検査する第二の検査部と、前記メモリから、前記第二の検査部によって検査されたサブセクタデータを読み出して前記転送サイズごとに前記ホストへ送信する送信部とを備える。
【発明の効果】
【００１６】
本願の開示する記憶装置の一つの態様によれば、セクタサイズが大きい場合であっても、少ないメモリ容量でデータの送受を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る記憶装置の構成例を示す図である。
【図２】図２は、実施例２に係るストレージ装置の構成例を示す図である。
【図３】図３は、リード処理時における第一検査部およびバッファマネージャによる処理の一例を示す図である。
【図４】図４は、リード処理時における第二検査部およびインタフェース制御部による処理の一例を示す図である。
【図５】図５は、ライト処理時における第二検査部およびバッファマネージャによる処理の一例を示す図である。
【図６】図６は、ライト処理時における第一検査部およびドライブ制御部による処理の一例を示す図である。
【図７】図７は、実施例２に係るストレージ装置によるリード処理手順を示すフローチャートである。
【図８】図８は、実施例２に係るストレージ装置によるライト処理手順を示すフローチャートである。
【図９】図９は、データ転送プログラムを実行するコンピュータを示す図である。
【図１０】図１０は、従来のストレージ装置によるデータの送受処理の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラムが限定されるものではない。
【実施例１】
【００１９】
［実施例１に係る記憶装置の構成］
まず、図１を用いて、実施例１に係る記憶装置の構成について説明する。図１は、実施例１に係る記憶装置の構成例を示す図である。図１に示した例において、実施例１に係る記憶装置１０は、ホスト装置１と接続されており、ホスト装置１との間で所定の転送サイズごとにデータを送受する。かかる記憶装置１０は、図１に示した例のように、ドライブ部１１と、第一検査部１２と、分割部１３と、付与部１４と、バッファ１５と、第二検査部１６と、メモリ１７と、送信部１８とを有する。
【００２０】
以下に、リード処理時における各部の処理について説明する。ドライブ部１１は、誤り検出用の符号が付与されたデータをセクタ単位に記憶する。第一検査部１２は、リード処理を行う場合に、ドライブ部１１からセクタ単位にデータを読み出し、読み出したデータに対して、誤り検出用の符号を用いた検査を行う。
【００２１】
分割部１３は、第一検査部１２によって検査されたセクタデータをセクタのサイズよりも小さいサイズに分割する。なお、以下では、分割されたセクタのそれぞれを「サブセクタ」と表記するものとする。また、分割されたセクタデータのそれぞれを「サブセクタデータ」と表記するものとする。
【００２２】
付与部１４は、分割部１３によって分割されたサブセクタデータごとに誤り検査用の符号を付与する。バッファ１５は、付与部１４によって誤り検査用の符号が付与されたサブセクタデータを記憶する。
【００２３】
第二検査部１６は、バッファ１５からサブセクタデータを読み出してメモリ１７に格納し、付与部１４によって付与された誤り検査用の符号を用いて検査を行う。メモリ１７は、各種データを一時的に記憶する記憶デバイスである。送信部１８は、メモリ１７から、第二検査部１６によって検査されたサブセクタデータを読み出して、転送サイズごとにホスト装置１へ送信する。
【００２４】
［実施例１の効果］
上述してきたように、実施例１に係る記憶装置１０は、リード処理を行う場合に、ドライブ部１１から読み出したセクタデータをサブセクタデータに分割し、サブセクタデータごとに誤り検査用の符号を付与してバッファ１５に格納する。そして、記憶装置１０は、バッファ１５から読み出したサブセクタデータをメモリ１７に格納して検査処理を行う。そして、記憶装置１０は、検査後のサブセクタデータが転送サイズに達した場合に、メモリ１７内のデータをホスト装置１へ送信する。
【００２５】
このように、実施例１に係る記憶装置１０は、ドライブ部１１のセクタサイズが大きい場合であっても、分割したサブセクタデータをメモリ１７に格納するので、メモリ１７の容量を多く用いることはない。
【００２６】
例えば、図１０に示したストレージ装置９００と比較して説明する。上述したように、図１０に示したストレージ装置９００は、セクタサイズが４［ＫＢ］である場合、リード処理時に、４［ＫＢ］のセクタデータをメモリ９０２に格納して検査処理を行うことになる。すなわち、メモリ９０２のサイズは、少なくとも４［ＫＢ］以上であることが求められる。
【００２７】
一方、図１に示した記憶装置１０は、セクタサイズが４［ＫＢ］であっても、分割したサブセクタデータをメモリ１７に格納して検査処理を行うことになる。例えば、記憶装置１０は、セクタデータを５１２［Ｂｙｔｅ］のサブセクタデータに分割する場合、５１２［Ｂｙｔｅ］のサブセクタデータをメモリ１７に格納して検査処理を行うことになる。したがって、この例の場合、図１に示したメモリ１７のサイズは、転送サイズの１０２４［Ｂｙｔｅ］以上であればよい。すなわち、記憶装置１０がセクタデータを５１２［Ｂｙｔｅ］のサブセクタデータに分割する場合、メモリ１７に求められるサイズは、セクタサイズが５１２［Ｂｙｔｅ］の場合と同様である。このように、実施例１に係る記憶装置１０は、セクタサイズが大きい場合であっても、少ないメモリ容量でデータの送受を行うことができる。
【００２８】
以上のことから、実施例１に係る記憶装置１０を用いると、メモリ１７の容量を増大させずにセクタサイズを拡大することができる。このため、実施例１に係る記憶装置１０を用いると、セクタサイズが大きい場合であっても、メモリを増設することがないので、記憶装置の価格が上昇することを防止することができる。
【実施例２】
【００２９】
次に、上記実施例１において説明した記憶装置１０について具体例を用いて説明する。実施例２では、実施例１において説明した記憶装置１０を、ストレージ装置に適用する例について説明する。
【００３０】
なお、実施例２では、データに付与される誤り検査用の符号として、ＣＲＣ（Cyclic  Redundancy  Check）符号を用い、データに付与される誤り訂正用の符号として、ＥＣＣ（Error  Correcting  Code）を用いる例を示す。また、実施例２では、ストレージ装置内部で付与されるＣＲＣ符号を「ＢＣＲＣ」と表記し、ストレージ装置内部で付与されるＥＣＣを「ＢＥＣＣ」と表記するものとする。また、実施例２では、１個のセクタのサイズが４［ＫＢ］であり、１個のサブセクタのサイズが５１２［Ｂｙｔｅ］であり、ホスト装置との間で送受されるデータの転送サイズが１０２４［Ｂｙｔｅ］である場合を例に挙げて説明する。
【００３１】
［実施例２に係るストレージ装置の構成］
まず、図２を用いて、実施例２に係るストレージ装置の構成について説明する。図２は、実施例２に係るストレージ装置の構成例を示す図である。図２に示した例において、実施例２に係るストレージ装置１００は、ホスト装置１と接続されており、ホスト装置１との間で所定の転送サイズごとにデータを送受する。また、ストレージ装置１００は、図２に示した例のように、ドライブ部１１０と、ドライブ制御部１２０と、第一検査部１３０と、バッファマネージャ１４０と、バッファ１５０と、第二検査部１６０と、インタフェース制御部１７０とを有する。
【００３２】
以下に、ストレージ装置１００が有する各部について、（１）ストレージ装置１００によってリード処理が行われる場合と、（２）ストレージ装置１００によってライト処理が行われる場合とに分けて説明する。
【００３３】
（１）リード時における各部の処理
まず、ストレージ装置１００によってリード処理が行われる場合における各部の処理について説明する。ドライブ部１１０は、例えば、磁気ディスク等の記憶デバイスであり、セクタ単位に各種データを記憶する。なお、実施例２では、１個のセクタのサイズが４［ＫＢ］であるので、ドライブ部１１０は、４［ＫＢ］のセクタごとにデータを記憶する。
【００３４】
ドライブ制御部１２０は、ストレージ装置１００によってリード処理が行われる場合に、ドライブ部１１０から、セクタ単位にデータを読み出して、読み出したセクタデータを第一検査部１３０へ出力する。
【００３５】
第一検査部１３０は、ストレージ装置１００によってリード処理が行われる場合に、ドライブ制御部１２０から入力されたセクタデータに付与されているＢＣＲＣを用いて、かかるセクタデータに誤りがあるか否かを検査する。そして、第一検査部１３０は、誤りを検出した場合に、セクタデータに付与されているＢＥＣＣを用いて、かかるセクタデータの誤りを訂正する。
【００３６】
そして、第一検査部１３０は、検査後のセクタデータからＢＣＲＣおよびＢＥＣＣを除去した後に、セクタサイズよりも小さいサブセクタデータに分割する。そして、第一検査部１３０は、分割したサブセクタデータごとにＢＣＲＣおよびＢＥＣＣを算出して、算出したＢＣＲＣおよびＢＥＣＣを付与する。実施例２では、セクタサイズが４［ＫＢ］であり、サブセクタのサイズが５１２［Ｂｙｔｅ］であるので、第一検査部１３０は、４［ＫＢ］のセクタデータを、５１２［Ｂｙｔｅ］のサブセクタデータに分割する。なお、第一検査部１３０は、図１に示した第一検査部１２と、分割部１３と、付与部１４とに相当する。
【００３７】
バッファマネージャ１４０は、バッファ１５０を制御する。具体的には、バッファマネージャ１４０は、ストレージ装置１００によってリード処理が行われる場合に、第一検査部１３０によってＢＣＲＣおよびＢＥＣＣが付与されたサブセクタデータをバッファ１５０に格納する。バッファ１５０は、ホスト装置１とストレージ装置１００との間で送受されるデータを一時的に記憶するキャッシュである。
【００３８】
ここで、図３を用いて、第一検査部１３０およびバッファマネージャ１４０による処理について説明する。図３は、リード処理時における第一検査部１３０およびバッファマネージャ１４０による処理の一例を示す図である。
【００３９】
図３に示した例において、ドライブ部１１０は、４［ＫＢ］のセクタデータＳＤ１０を記憶している。図３に示すように、セクタデータＳＤ１０は、データＤ１０と、ＢＣＲＣと、ＢＥＣＣとを含む。第一検査部１３０は、ドライブ制御部１２０から、図３に例示したセクタデータＳＤ１０が入力された場合、セクタデータＳＤ１０に付与されているＢＣＲＣを用いて、セクタデータＳＤ１０に誤りがあるか否かを検査する。そして、第一検査部１３０は、誤りを検出した場合に、セクタデータＳＤ１０に付与されているＢＥＣＣを用いて、セクタデータＳＤ１０の誤りを訂正する。
【００４０】
続いて、第一検査部１３０は、検査後のデータＤ１０を、図３の下段に示した例のように、８個のデータＤ１１〜Ｄ１８に分割する。なお、データＤ１１〜Ｄ１８のサイズは、それぞれ５１２［Ｂｙｔｅ］である。そして、第一検査部１３０は、分割したデータＤ１１〜Ｄ１８に、それぞれＢＣＲＣおよびＢＥＣＣを付与する。図３に示した例では、第一検査部１３０は、データＤ１１にＢＣＲＣ１１とＢＥＣＣ１１とを付与し、データＤ１２にＢＣＲＣ１２とＢＥＣＣ１２とを付与している。同様に、第一検査部１３０は、データＤ１３〜Ｄ１８についても、それぞれＢＣＲＣ１３〜１８と、ＢＥＣＣ１３〜１８とを付与している。
【００４１】
そして、バッファマネージャ１４０は、図３の下段に示した例のように、第一検査部１３０によってＢＣＲＣおよびＢＥＣＣが付与されたサブセクタデータＳＢ１１〜ＳＢ１８をバッファ１５０に格納する。
【００４２】
図２の説明に戻って、第二検査部１６０は、ストレージ装置１００によってリード処理が行われる場合に、バッファマネージャ１４０を介して、バッファ１５０からサブセクタデータを読み出す。そして、第二検査部１６０は、読み出したサブセクタデータを後述するメモリ１７１に格納し、格納したサブセクタデータに付与されているＢＣＲＣを用いて、かかるサブセクタデータに誤りがあるか否かを検査する。そして、第二検査部１６０は、誤りを検出した場合に、サブセクタデータに付与されているＢＥＣＣを用いて、かかるサブセクタデータの誤りを訂正する。
【００４３】
インタフェース制御部１７０は、ホスト装置１との間でデータを送受するインタフェースを制御する。具体的には、インタフェース制御部１７０は、メモリ１７１にデータを一時的に格納しながら、ホスト装置１との間でデータを送受する。メモリ１７１は、例えば、ＦＩＦＯ方式によりデータ管理を行う記憶デバイスである。なお、インタフェース制御部１７０は、図１に示したメモリ１７と送信部１８とに対応する。
【００４４】
ここで、図４を用いて、第二検査部１６０およびインタフェース制御部１７０による処理について説明する。図４は、リード処理時における第二検査部１６０およびインタフェース制御部１７０による処理の一例を示す図である。なお、図４に示した例において、バッファ１５０には、図３において説明したサブセクタデータＳＢ１１〜ＳＢ１８が記憶されているものとする。
【００４５】
図４に示した例において、第二検査部１６０は、バッファマネージャ１４０を介して、バッファ１５０からサブセクタデータＳＢ１１を読み出す。そして、第二検査部１６０は、読み出したサブセクタデータＳＢ１１をメモリ１７１に格納して、サブセクタデータＳＢ１１に付与されているＢＣＲＣ１１を用いて、サブセクタデータＳＢ１１に誤りがあるか否かを検査する。そして、第二検査部１６０は、誤りを検出した場合に、サブセクタデータＳＢ１１に付与されているＢＥＣＣ１１を用いて、サブセクタデータＳＢ１１の誤りを訂正する。同様にして、第二検査部１６０は、バッファ１５０からサブセクタデータＳＢ１２を読み出してメモリ１７１に格納し、サブセクタデータＳＢ１２の検査および訂正を行う。
【００４６】
そして、インタフェース制御部１７０は、メモリ１７１に格納されているサブセクタデータが、転送サイズの１０２４［Ｂｙｔｅ］に達した場合に、データをホスト装置１へ送信する。図４に示した例では、インタフェース制御部１７０は、データＤ１１と、データＤ１２とがメモリ１７１に格納されて、第二検査部１６０による検査処理および訂正処理が終了した後に、データＤ１１およびＤ１２をホスト装置１へ送信する。
【００４７】
同様にして、インタフェース制御部１７０は、データＤ１３およびＤ１４がメモリ１７１に格納されて、第二検査部１６０による検査処理および訂正処理が終了した後に、データＤ１３およびＤ１４をホスト装置１へ送信する。同様にして、インタフェース制御部１７０は、データＤ１５およびＤ１６をホスト装置１へ送信し、データＤ１７およびＤ１８をホスト装置１へ送信する。
【００４８】
なお、第二検査部１６０またはインタフェース制御部１７０は、ホスト装置１へ送信するデータに、ＣＲＣおよびＥＣＣを付与する。例えば、図４に示した例において、第二検査部１６０またはインタフェース制御部１７０は、データＤ１１およびＤ１２の後尾に、ＣＲＣおよびＥＣＣを付与する。
【００４９】
（２）ライト時における各部の処理
次に、ライト処理時におけるストレージ装置１００の処理について説明する。実施例２に係るストレージ装置１００は、ライト処理を行う場合、ホスト装置１から受け付けたデータを、リード処理時と同様のサイズのサブセクタデータに分割して、バッファ１５０に格納する。そして、ストレージ装置１００は、バッファ１５０に格納したサブセクタデータを結合することにより、セクタ単位にデータをドライブ部１１０に格納する。このように、ストレージ装置１００は、リード処理時と同様のサブセクタデータをバッファ１５０に格納することで、リード処理時にキャッシュヒットを実現可能にする。
【００５０】
以下に、ライト処理時における図２に示した各部の処理について説明する。なお、ドライブ部１１０と、バッファ１５０については、リード時と同様の機能であるため、説明を省略する。
【００５１】
インタフェース制御部１７０は、ストレージ装置１００によってライト処理が行われる場合、ホスト装置１からデータを受信し、受信したデータをメモリ１７１に格納する。なお、ホスト装置１から受信したデータには、ＣＲＣとＥＣＣとが付与されている。
【００５２】
第二検査部１６０は、メモリ１７１に格納されているデータに対して検査処理および訂正処理を行う。そして、第二検査部１６０は、検査後のデータをサブセクタデータ単位に分割して、サブセクタデータごとにＢＣＲＣおよびＢＥＣＣを付与する。
【００５３】
バッファマネージャ１４０は、ストレージ装置１００によってライト処理が行われる場合に、第二検査部１６０によってＢＣＲＣおよびＢＥＣＣが付与されたサブセクタデータをバッファ１５０に格納する。
【００５４】
ここで、図５を用いて、ライト処理時における第二検査部１６０およびバッファマネージャ１４０による処理について説明する。図５は、ライト処理時における第二検査部１６０およびバッファマネージャ１４０による処理の一例を示す図である。
【００５５】
図５に示した例において、インタフェース制御部１７０は、１０２４［Ｂｙｔｅ］のデータＤ２０を受信して、受信したデータＤ２０をメモリ１７１に格納している。図５に示すように、データＤ２０にはＣＲＣおよびＥＣＣが付与されている。第二検査部１６０は、データＤ２０に付与されているＣＲＣ符号を用いて、データＤ２０に誤りがあるか否かを検査する。そして、第二検査部１６０は、誤りを検出した場合に、データＤ２０に付与されているＥＣＣを用いて、データＤ２０の誤りを訂正する。
【００５６】
続いて、第二検査部１６０は、検査後のデータＤ２０を、図５の下段に示した例のように、５１２［Ｂｙｔｅ］のデータＤ２１と、データＤ２２とに分割する。そして、第二検査部１６０は、分割したデータＤ２１およびＤ２２に、それぞれＢＣＲＣおよびＢＥＣＣを付与する。図５に示した例では、第二検査部１６０は、データＤ２１にＢＣＲＣ２１およびとＢＥＣＣ２１を付与し、データＤ２２にＢＣＲＣ２２およびＢＥＣＣ２２を付与している。
【００５７】
そして、バッファマネージャ１４０は、図５の下段に示した例のように、第二検査部１６０によってＢＣＲＣおよびＢＥＣＣが付与されたサブセクタデータＳＢ２１およびＳＢ２２をバッファ１５０に格納する。
【００５８】
第二検査部１６０は、ホスト装置１からデータを受信するたびに、メモリ１７１に格納されているデータに対して、検査処理および訂正処理を行い、検査後のデータを分割してＢＣＲＣおよびＢＥＣＣを付与する。そして、バッファマネージャ１４０は、第二検査部１６０によって、サブセクタデータが生成されるたびに、生成されたサブセクタデータをバッファ１５０に格納する。
【００５９】
図２の説明に戻って、第一検査部１３０は、ストレージ装置１００によってライト処理が行われる場合に、バッファマネージャ１４０を介して、バッファ１５０からサブセクタデータを読み出す。そして、第一検査部１３０は、読み出したサブセクタデータに付与されているＢＣＲＣを用いて、かかるサブセクタデータに誤りがあるか否かを検査する。そして、第一検査部１３０は、誤りを検出した場合に、サブセクタデータに付与されているＢＥＣＣを用いて、かかるサブセクタデータの誤りを訂正する。
【００６０】
そして、第一検査部１３０は、検査後のサブセクタデータからＢＣＲＣおよびＢＥＣＣを除去した後に、サブセクタデータを結合して、４［ＫＢ］のセクタデータを生成する。そして、第一検査部１３０は、生成したセクタデータにＢＣＲＣおよびＢＥＣＣを付与する。このようにして、第一検査部１３０は、サブセクタデータを結合することにより、セクタデータを生成する。
【００６１】
ドライブ制御部１２０は、ストレージ装置１００によってライト処理が行われる場合に、第一検査部１３０によって生成されたセクタデータをドライブ部１１０に格納する。
【００６２】
ここで、図６を用いて、ライト処理時における第一検査部１３０およびドライブ制御部１２０による処理について説明する。図６は、ライト処理時における第一検査部１３０およびドライブ制御部１２０による処理の一例を示す図である。なお、図６に示した例において、バッファ１５０には、図５において説明したサブセクタデータＳＢ２１およびＳＢ２２に加えて、サブセクタデータＳＢ２３〜ＳＢ２８が記憶されているものとする。
【００６３】
図６に示した例において、第一検査部１３０は、バッファマネージャ１４０を介して、バッファ１５０からサブセクタデータＳＢ２１を読み出す。そして、第一検査部１３０は、読み出したサブセクタデータＳＢ２１に付与されているＢＣＲＣ２１を用いて、サブセクタデータＳＢ２１に誤りがあるか否かを検査する。そして、第一検査部１３０は、誤りを検出した場合に、サブセクタデータＳＢ２１に付与されているＢＥＣＣ２１を用いて、サブセクタデータＳＢ２１の誤りを訂正する。同様に、第一検査部１３０は、サブセクタデータＳＢ２２〜Ｂ２８について、検査処理および訂正処理を行う。
【００６４】
そして、第一検査部１３０は、検査後のサブセクタデータＳＢ２１〜ＳＢ２８からＢＣＲＣ２１〜ＢＣＲＣ２８およびＢＥＣＣ２１〜ＢＥＣＣ２８を除去した後に、データＤ２１〜Ｄ２８を結合して、４［ＫＢ］のデータＤ３０を生成する。そして、第一検査部１３０は、生成したデータＤ３０にＢＣＲＣおよびＢＥＣＣを付与する。このようにして、第一検査部１３０は、サブセクタデータを結合することにより、セクタデータＳＤ３０を生成する。そして、ドライブ制御部１２０は、第一検査部１３０によって生成されたセクタデータＳＤ３０をドライブ部１１０に格納する。
【００６５】
このように、実施例１に係るストレージ装置１００は、ライト処理を行う場合、サブセクタ単位でデータをバッファ１５０に格納し、セクタ単位でデータをドライブ部１１０に格納する。
【００６６】
［リード処理手順］
次に、図７を用いて、実施例２に係るストレージ装置１００によるリード処理の手順について説明する。図７は、実施例２に係るストレージ装置１００によるリード処理手順を示すフローチャートである。
【００６７】
図７に示すように、ストレージ装置１００のドライブ制御部１２０は、リード命令を受け付けた場合に（ステップＳ１０１肯定）、ドライブ部１１０から、セクタ単位にデータを読み出す（ステップＳ１０２）。
【００６８】
続いて、第一検査部１３０は、ドライブ制御部１２０によって読み出されたセクタデータごとに、かかるセクタデータに付与されているＢＣＲＣを用いて誤りがあるか否かを検査する（ステップＳ１０３）。続いて、第一検査部１３０は、誤りを検出した場合に、セクタデータに付与されているＢＥＣＣを用いて、かかるセクタデータの誤りを訂正する。
【００６９】
そして、第一検査部１３０は、セクタデータの誤り訂正処理にエラーが発生した場合（ステップＳ１０４肯定）、セクタデータをドライブ部１１０から再度読み出すリトライ処理を行うか、または、ホスト装置１へエラー通知を行う（ステップＳ１０５）。
【００７０】
一方、セクタデータに誤りが検出されなかった場合や、訂正処理にエラーが発生しなかった場合に（ステップＳ１０４否定）、第一検査部１３０は、検査後のセクタデータからＢＣＲＣおよびＢＥＣＣを除去した後に、セクタサイズよりも小さいサブセクタデータに分割する（ステップＳ１０６）。
【００７１】
続いて、第一検査部１３０は、分割したサブセクタデータごとにＢＣＲＣおよびＢＥＣＣを付与してバッファ１５０へ転送する（ステップＳ１０７）。具体的には、バッファマネージャ１４０は、第一検査部１３０によってＢＣＲＣおよびＢＥＣＣが付与されたサブセクタデータをバッファ１５０に格納する。
【００７２】
続いて、第二検査部１６０は、バッファマネージャ１４０を介して、バッファ１５０からサブセクタデータを読み出し、読み出したサブセクタデータごとに誤りがあるか否かを検査する（ステップＳ１０８）。具体的には、第二検査部１６０は、バッファ１５０から読み出したサブセクタデータをメモリ１７１に格納し、サブセクタデータに付与されているＢＣＲＣを用いて誤りがあるか否かを検査する。
【００７３】
そして、第二検査部１６０によって誤りが検出されなかった場合に（ステップＳ１０９否定）、インタフェース制御部１７０は、メモリ１７１に格納されているサブセクタデータを転送サイズ単位でホスト装置１へ送信する（ステップＳ１１０）。
【００７４】
一方、第二検査部１６０は、誤りを検出した場合に（ステップＳ１０９肯定）、サブセクタデータに付与されているＢＥＣＣを用いて訂正可能であるか否かを判定する。そして、第二検査部１６０は、ＢＥＣＣを用いて訂正可能である場合に（ステップＳ１１１肯定）、かかるサブセクタデータの誤りを訂正する（ステップＳ１１２）。一方、第二検査部１６０は、ＢＥＣＣを用いて訂正可能でない場合に（ステップＳ１１１否定）、サブセクタデータをバッファ１５０から再度読み出すリトライ処理を行うか、または、ホスト装置１へエラー通知を行う（ステップＳ１０５）。
【００７５】
［ライト処理手順］
次に、図８を用いて、実施例２に係るストレージ装置１００によるライト処理の手順について説明する。図８は、実施例２に係るストレージ装置１００によるライト処理手順を示すフローチャートである。
【００７６】
図８に示すように、ストレージ装置１００のインタフェース制御部１７０は、ホスト装置１からライト対象のデータを受け付けた場合に（ステップＳ２０１肯定）、受信したデータをメモリ１７１に格納する。
【００７７】
続いて、第二検査部１６０は、メモリ１７１に格納されているデータに対して検査処理および訂正処理を行い、検査後のデータをサブセクタデータ単位に分割する（ステップＳ２０２）。続いて、第二検査部１６０は、分割したサブセクタデータごとにＢＣＲＣおよびＢＥＣＣを付与してバッファ１５０へ転送する（ステップＳ２０３）。
【００７８】
続いて、ストレージ装置１００は、ライト処理用のレジスタ設定を行う（ステップＳ２０４）。なお、ここで言うライト処理用のレジスタ設定とは、例えば、磁気ヘッドのシーク制御や、データの書き込み先のＬＢＡ（Logical  Block  Addressing）などを決定するための処理を示す。
【００７９】
続いて、第一検査部１３０は、バッファマネージャ１４０を介して、バッファ１５０からサブセクタデータを読み出し、読み出したサブセクタデータごとに誤りがあるか否かを検査する（ステップＳ２０５）。具体的には、第一検査部１３０は、バッファ１５０から読み出したサブセクタデータに付与されているＢＣＲＣを用いて誤りがあるか否かを検査する。
【００８０】
そして、第一検査部１３０は、誤りを検出した場合に（ステップＳ２０６肯定）、サブセクタデータに付与されているＢＥＣＣを用いて訂正可能であるか否かを判定する。そして、第一検査部１３０は、ＢＥＣＣを用いて訂正可能である場合に（ステップＳ２０７肯定）、かかるサブセクタデータの誤りを訂正する（ステップＳ２０８）。一方、第一検査部１３０は、ＢＥＣＣを用いて訂正可能でない場合に（ステップＳ２０７否定）、ホスト装置１へエラー通知を行う（ステップＳ２０９）。
【００８１】
そして、第一検査部１３０は、検査後および訂正後のサブセクタデータからＢＣＲＣおよびＢＥＣＣを除去した後に、サブセクタデータを結合して、セクタデータを生成し、生成したセクタデータにＢＣＲＣおよびＢＥＣＣを付与する（ステップＳ２１０）。続いて、ドライブ制御部１２０は、第一検査部１３０によって生成されたセクタデータをドライブ部１１０に書き込む（ステップＳ２１１）。
【００８２】
また、第一検査部１３０は、誤りを検出しなかった場合に（ステップＳ２０６否定）、サブセクタデータからＢＣＲＣおよびＢＥＣＣを除去した後に、サブセクタデータを結合して、セクタデータを生成し、生成したセクタデータにＢＣＲＣおよびＢＥＣＣを付与する（ステップＳ２１０）。続いて、ドライブ制御部１２０は、第一検査部１３０によって生成されたセクタデータをドライブ部１１０に書き込む（ステップＳ２１１）。
【００８３】
［実施例２の効果］
上述してきたように、実施例２に係るストレージ装置１００は、リード処理を行う場合に、ドライブ部１１０からセクタ単位に読み出したセクタデータをサブセクタデータに分割する。そして、ストレージ装置１００は、分割したサブセクタデータごとにＢＣＲＣおよびＢＥＣＣを付与して、バッファ１５０に格納する。そして、ストレージ装置１００は、バッファ１５０から読み出したサブセクタデータをメモリ１７１に格納して検査し、メモリ１７１内のサブセクタデータを転送サイズごとにホスト装置１へ送信する。これにより、実施例２に係るストレージ装置１００は、ドライブ部１１のセクタサイズが大きい場合であっても、分割したサブセクタデータをメモリ１７１に格納するので、メモリ１７１の容量を多く用いることはない。このため、実施例２に係るストレージ装置１００を用いると、メモリ１７１の容量を増大させずにセクタサイズを拡大することができる。
【００８４】
また、実施例２に係るストレージ装置１００は、ライト処理を行う場合に、ホスト装置１から受け付けたデータをサブセクタ単位に分割し、分割したサブセクタデータごとにＢＣＲＣおよびＢＥＣＣを付与してバッファ１５０に格納する。そして、ストレージ装置１００は、バッファ１５０から読み出したサブセクタデータを検査して、ドライブ部１１０に格納する。これにより、実施例２に係るストレージ装置１００は、ライト処理時に、リード処理時と同様のサブセクタデータをバッファ１５０に格納するので、リード処理時にキャッシュヒットを実現することができる。
【００８５】
また、実施例２に係るストレージ装置１００は、ライト処理を行う場合に、バッファ１５０から読み出したサブセクタデータからＢＣＲＣおよびＢＥＣＣを除去した後に、サブセクタデータを結合してセクタデータを生成する。そして、ストレージ装置１００は、生成したセクタデータをドライブ部１１０に格納する。これにより、実施例２に係るストレージ装置１００は、ドライブ部１１０の容量が圧迫されることを防止することができる。
【００８６】
具体的には、例えば、ストレージ装置１００は、サブセクタ単位でデータをドライブ部１１０に格納することも考えられる。しかし、かかる場合では、サブセクタデータごとにＢＣＲＣおよびＢＥＣＣが付与されるので、ドライブ部１１０の容量を圧迫してしまう。そこで、実施例２に係るストレージ装置１００は、セクタ単位でデータをドライブ部１１０に格納することにより、ドライブ部１１０の容量が圧迫されることを防止する。
【００８７】
なお、上記実施例２では、セクタのサイズが４［ＫＢ］であり、サブセクタのサイズが５１２［Ｂｙｔｅ］であり、ホスト装置との間で送受されるデータの転送サイズが１０２４［Ｂｙｔｅ］である場合を例に挙げて説明した。しかし、各サイズは、上記例に限られない。例えば、セクタのサイズは、１［ＫＢ］や８［ＫＢ］などであってもよい。また、サブセクタのサイズは、１［ＫＢ］などであってもよい。また、転送サイズは、５１２［Ｂｙｔｅ］などであってもよい。
【実施例３】
【００８８】
ところで、本願の開示する記憶装置等は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例３では、本願の開示する記憶装置等の他の実施例について説明する。
【００８９】
［システム構成等］
上記実施例１および２において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９０】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９１】
［プログラム］
また、上記実施例１および２で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図９を用いて、上記の実施例１における記憶装置１０と同様の機能を有するデータ転送プログラムを実行するコンピュータの一例を説明する。
【００９２】
図９は、データ転送プログラムを実行するコンピュータを示す図である。図９に示すように、コンピュータ１０００は、ドライブ部１１と、バッファ１５と、メモリ１７と、ＲＯＭ（Read  Only  Memory）１０４０と、ＣＰＵ（Central  Processing  Unit）１０５０とを有する。ドライブ部１１、バッファ１５、メモリ１７、ＲＯＭ１０４０、ＣＰＵ１０５０は、バス１０６０によって接続されている。
【００９３】
ＲＯＭ１０４０には、上記の実施例１における記憶装置１０と同様の機能を発揮するデータ転送プログラムが予め記憶されている。具体的には、ＲＯＭ１０４０には、第一検査プログラム１０４１と、分割プログラム１０４２と、付与プログラム１０４３と、第二検査プログラム１０４４と、送信プログラム１０４５とが記憶されている。
【００９４】
そして、ＣＰＵ１０５０は、これらの第一検査プログラム１０４１と、分割プログラム１０４２と、付与プログラム１０４３と、第二検査プログラム１０４４と、送信プログラム１０４５とを読み出して実行する。これにより、図９に示すように、第一検査プログラム１０４１は、第一検査プロセス１０５１になり、分割プログラム１０４２は、分割プロセス１０５２になり、付与プログラム１０４３は、付与プロセス１０５３になる。また、第二検査プログラム１０４４は、第二検査プロセス１０５４になり、送信プログラム１０４５は、送信プロセス１０５５になる。
【００９５】
なお、第一検査プロセス１０５１は、図１に示した第一検査部１２に対応し、分割プロセス１０５２は、図１に示した分割部１３に対応し、付与プロセス１０５３は、図１に示した付与部１４に対応する。また、第二検査プロセス１０５４は、図１に示した第二検査部１６に対応し、送信プロセス１０５５は、図１に示した送信部１８に対応する。
【００９６】
なお、上記した各プログラム１０４１〜１０４５については、必ずしもＲＯＭ１０４０に記憶させなくてもよい。例えば、コンピュータ１０００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラム１０４１〜１０４５を記憶させてもよい。または、コンピュータ１０００の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」にプログラム１０４１〜１０４５を記憶させてもよい。または、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１０００に接続される「他のコンピュータ（またはサーバ）」にプログラム１０４１〜１０４５を記憶させてもよい。そして、コンピュータ１０００は、上述したフレキシブルディスク等から各プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００９７】
１  ホスト装置
１０  記憶装置
１１  ドライブ部
１２  第一検査部
１３  分割部
１４  付与部
１５  バッファ
１６  第二検査部
１７  メモリ
１８  送信部
１００  ストレージ装置
１１０  ドライブ部
１２０  ドライブ制御部
１３０  第一検査部
１４０  バッファマネージャ
１５０  バッファ
１６０  第二検査部
１７０  インタフェース制御部
１７１  メモリ
９００  ストレージ装置
９０１  ドライブ部
９０２  メモリ
１０００  コンピュータ
１０４０  ＲＯＭ
１０４１  第一検査プログラム
１０４２  分割プログラム
１０４３  付与プログラム
１０４４  第二検査プログラム
１０４５  送信プログラム
１０５０  ＣＰＵ
１０５１  第一検査プロセス
１０５２  分割プロセス
１０５３  付与プロセス
１０５４  第二検査プロセス
１０５５  送信プロセス
１０６０  バス
【図１】
2010267164.tif 000003
【図２】
2010267164.tif 000004
【図３】
2010267164.tif 000005
【図４】
2010267164.tif 000006
【図５】
2010267164.tif 000007
【図６】
2010267164.tif 000008
【図７】
2010267164.tif 000009
【図８】
2010267164.tif 000010
【図９】
2010267164.tif 000011
【図１０】
2010267164.tif 000012