(57)【要約】【課題】メディアへの書き込み完了後にコマンド完了通知を送信するコマンドの実行順序を効果的に決定する。【解決手段】本発明の一実施の形態に係るＨＤＤ１は、複数のライト・コマンドＷＲ１−ＷＲ５をキャッシュしている状態において、ＦＵＡコマンドを受信した場合、ＦＵＡコマンドを、他のライト・コマンドに対して優先した実行順序を決定する。ライト・バッファはリング・バッファ方式である。予め定められた基準を満たす場合は、FUAコマンド、もしくは、FUAコマンドを含み互いに関連付けられた一連のライト・コマンドの実行順序を、最初の実行順序に設定する。上記基準を満たさない場合は、キャッシュされているライト・コマンドの中で、最古のライト・コマンドを最初の実行順序に設定し、FUAコマンド、もしくは、FUAコマンドを含み互いに関連付けられた一連のライト・コマンドの実行順序を最古のライト・コマンドの後の実行順序に設定する。【選択図】図８
2012038330.tif 000002
【特許請求の範囲】
【請求項１】
メディアに書き込むべきライト・データを一時的に記憶するライト・バッファと、
前記メディアに書き込むべきライト・データのそれぞれと対応するライト・コマンドに関する情報を登録するテーブルと、
前記テーブルに登録されているライト・コマンドの実行順序を決定するキャッシュ・マネージャと、
を備え、
前記キャッシュ・マネージャは、前記メディアへの書き込み完了後にコマンド完了通知をホストへ送信するメディア書き込み強制コマンドを取得した場合、非メディア書き込み強制コマンドを取得した場合よりも高い優先度においてその実行順序を決定し、
前記ライト・バッファはリング・バッファ方式のバッファであり、
前記キャッシュ・マネージャは、予め定められた基準に基づいて、
前記基準を満たす場合は、前記メディア書き込み強制コマンド、もしくは、前記メディア書き込み強制コマンドを含み互いに関連付けられた一連のライト・コマンドの実行順序を、最初の実行順序に設定し、
前記基準を満たさない場合は、キャッシュされているライト・コマンドの中で、最古のライト・コマンドを最初の実行順序に設定し、前記メディア書き込み強制コマンド、もしくは、前記メディア書き込み強制コマンドを含み互いに関連付けられた一連のライト・コマンドの実行順序を前記最古のライト・コマンドの後の実行順序に設定する、
ハードディスクドライブ。
【請求項２】
請求項１に記載のハードディスクドライブであって、
前記メディア書き込み強制コマンド、もしくは、前記メディア書き込み強制コマンドを含み互いに関連付けられた一連のライト・コマンドの後に実行されるライト・コマンドをリオーダリングすることを特徴とするハードディスクドライブ。
【請求項３】
請求項２に記載のハードディスクドライブであって、
前記リオーダリングは、RPO（Rotational Positioning Optimization）アルゴリズムにより並べ替えることを特徴とするハードディスクドライブ。
【請求項４】
請求項２に記載のハードディスクドライブであって、
前記基準は予め定められた前記ライト・バッファに格納されたコマンドの数であることを特徴とするハードディスクドライブ。
【請求項５】
請求項４に記載のハードディスクドライブであって、
前記格納されたコマンドの数は、ライト・コマンドの数であることを特徴とするハードディスクドライブ。
【請求項６】
請求項２に記載のハードディスクドライブであって、
前記基準は予め定められた前記ライト・バッファに格納されているライト・コマンドに対応するデータ・セクタ数であることを特徴とするハードディスクドライブ。
【請求項７】
請求項２に記載のハードディスクドライブであって、
前記基準は予め定められた前記ライト・バッファに格納されているライト・コマンドの実行時間であることを特徴とするハードディスクドライブ。
【請求項８】
請求項７に記載のハードディスクドライブであって、
前記ライト・コマンドの実行時間はエラーによるリトライ処理と実行時のばらつきに関する係数を乗じた実行時間であることを特徴とするハードディスクドライブ。
【請求項９】
請求項２に記載のハードディスクドライブであって、
前記基準は予め定められた前記ライト・バッファの空き容量であることを特徴とするハードディスクドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスクドライブに関し、特に、データ記憶装置のライト・キャッシュに登録されているライト・コマンドの実行順序制御に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスクや磁気テープあるいは半導体メモリなどの様々な態様のメディアを使用する装置が知られている。その中で、ハードディスク・ドライブ（以下、ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途はその優れた特性により益々拡大している。
【０００３】
ＨＤＤで使用される磁気ディスクは、同心円状に形成された複数のトラックを有しており、各トラックは複数のセクタ（サーボ・セクタ）に区分されている。各サーボ・セクタにはサーボ・データと、ユーザ・データが記録される。サーボ・セクタ内には複数セクタ（データ・セクタ）のユーザ・データが記録されている。ヘッド素子部がサーボ・データに従って移動することによって、所望アドレスへのデータ書き込みあるいは所望アドレスからのデータ読み出しを行うことができる。データ読み出し処理において、ヘッド素子部が磁気ディスクから読み出した信号は信号処理回路によって波形整形や復号処理などの所定の信号処理が施され、ホストに転送される。ホストからの転送データは、信号処理回路によって同様に所定処理された後に、ヘッド素子部によって磁気ディスクに書き込まれる。
【０００４】
ＨＤＤのパフォーマンス向上手法の１つとして、ライト・キャッシュが知られている。この手法において、ＨＤＤは、ホストからのライト・コマンドをキャッシュし、また、そのライト・データをライト・バッファに記憶する。ライト・バッファへのライト・データの格納が完了した段階で、ホストにコマンドの完了通知を送信する。ＨＤＤは、ホストとの間の通信と並行して、ライト・バッファに格納してあるライト・データを磁気ディスクに書き出していく。ホストは、ＨＤＤからコマンドの完了通知を受信すると、次のコマンドをＨＤＤに発行することができる。
【０００５】
一方、ＨＤＤ内の処理を効率化し、最短時間で全てのライト・データを磁気ディスクに書き込めるよう、ＲＰＯ（Rotational Positioning Optimization）等のアルゴリズムを使用して、ライト・データのディスク書き込み順序を最適化する技術が知られている（例えば、特許文献１を参照）。ＲＰＯは、例えば、実行待ちのコマンドを実行したときに、磁気ディスク上のターゲット・トラックへのシークを開始してから到達するまでのシーク時間と、到達後にターゲット・セクタにアクセスを開始するまでのディスク回転待ち時間とを予想する。シーク時間および回転待ち時間の合計が最短となる実行待ちコマンドを、次に実行するコマンドとして選択する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１２２６３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ホストとＨＤＤとの間のインターフェース仕様として、ＳＣＳＩやＡＴＡ規格が知られているが、次期規格であるATA standard 7において、新たにＦＵＡ（Forced Unit Access）シリーズのコマンドがサポートされる。ホストからＦＵＡコマンドを取得したＨＤＤは、ライト・キャッシュがＯＮの状態にあっても、そのライト・データを磁気ディスクに書き込んだ後に、ホストに対してコマンド完了通知を送らなければならない。
【０００８】
ライト・キャッシュがＯＮの場合、キャッシュされたライト・データは、電源ダウンなどなんらかの理由によって磁気ディスクに書き込まれない場合が考えられる。ホストは、ＦＵＡコマンドを発行することによって、ライト・データが磁気ディスクに確実に書き込まれたことを確認することができるので、クリティカルなデータが磁気ディスクに書き込まれずに消失することを防止することができる。
【０００９】
一方、重要度の低いデータについては、ホストは通常のコマンド（非ＦＵＡコマンド）を発行してライトを指示する。これによってライト・キャッシュ機能を利用し、ホストとＨＤＤのパフォーマンスの向上を図ることができる。このように、ＦＵＡコマンドは、データ書き込みの安全性とパフォーマンスの両立を図る技術であるといえる。
【００１０】
しかしながら、ライト・キャッシュがＯＮである場合、ＦＵＡコマンドを取得したタイミングにおいて、ＨＤＤがすでに複数のライト・コマンドをキャッシュしているケースが頻繁に起こる。例えば、既に５つのライト・コマンドがキャッシュされているとすると、新たに取得されたＦＵＡコマンドは、その５つのライト・コマンドの終了を待って実行されることも考えられる。ＨＤＤは、ＦＵＡコマンドの完了通知を、対応データが磁気ディスクに書き込まれるまでホストに送信しない。このため、ホストは、次のコマンド発行のために、ＦＵＡコマンド完了の他に、５つの他のライト・コマンドの実行完了を待たなければならない。
【００１１】
従って、ＦＵＡコマンドを含むライト・コマンドの実行順序を決定する新たな手法が必要とされる。また、ＦＵＡコマンドの実行順序決定において、ホストの待ち時間減少の観点の他に、ＨＤＤのスループット等を考慮することも重要な点の一つである。
【００１２】
本発明は上述のような事情を背景としてなされたものであって、ハードディスクにおけるライト・コマンド実行順序の決定手法を改善し、データの安全性とホストとデータ記憶装置のデータ処理効率の向上を図ることを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の態様に係るデータ記憶装置は、メディアに書き込むべきライト・データを一時的に記憶するライト・バッファと、前記メディアに書き込むべきライト・データのそれぞれと対応するライト・コマンドに関する情報を登録するテーブルと、前記テーブルに登録されているライト・コマンドの実行順序を決定するキャッシュ・マネージャと、を備え、前記キャッシュ・マネージャは、前記メディアへの書き込み完了後にコマンド完了通知をホストへ送信するメディア書き込み強制コマンドを取得した場合、非メディア書き込み強制コマンドを取得した場合よりも高い優先度においてその実行順序を決定し、前記ライト・バッファはリング・バッファ方式のバッファであり、前記キャッシュ・マネージャは、予め定められた基準に基づいて、前記基準を満たす場合は、前記メディア書き込み強制コマンド、もしくは、前記メディア書き込み強制コマンドを含み互いに関連付けられた一連のライト・コマンドの実行順序を、最初の実行順序に設定し、前記基準を満たさない場合は、キャッシュされているライト・コマンドの中で、最古のライト・コマンドを最初の実行順序に設定し、前記メディア書き込み強制コマンド、もしくは、前記メディア書き込み強制コマンドを含み互いに関連付けられた一連のライト・コマンドの実行順序を前記最古のライト・コマンドの後の実行順序に設定するものである。
【００１４】
本発明の第２の態様は、上記第１の態様において、前記メディア書き込み強制コマンド、もしくは、前記メディア書き込み強制コマンドを含み互いに関連付けられた一連のライト・コマンドの後に実行されるライト・コマンドをリオーダリングするものである。
【００１５】
本発明の第３の態様は、上記第２の態様において、前記リオーダリングは、RPOアルゴリズムにより並べ替えるものである。
【００１６】
本発明の第４の態様は、上記第２の態様において、前記基準は予め定められた前記ライト・バッファに格納されたコマンドの数である。
【００１７】
本発明の第５の態様は、上記第４の態様において、前記格納されたコマンドの数は、ライト・コマンドの数である。
【００１８】
本発明の第６の態様は、上記第２の態様において、前記基準は予め定められた前記ライト・バッファに格納されているライト・コマンドに対応するデータ・セクタ数である。
【００１９】
本発明の第７の態様は、上記第２の態様において、前記基準は予め定められた前記ライト・バッファに格納されているライト・コマンドの実行時間である。
【００２０】
本発明の第８の態様は、上記第７の態様において、前記ライト・コマンドの実行時間はエラーによるリトライ処理と実行時のばらつきに関する係数を乗じた実行時間である。
【００２１】
本発明の第９の態様は、上記第２の態様において、前記基準は予め定められた前記ライト・バッファの空き容量である。
【発明の効果】
【００２２】
本発明によれは、ライト・コマンド実行順序の決定手法を改善し、データの安全性とホストとデータ記憶装置のデータ処理効率の向上を図ることができる。
【図面の簡単な説明】
【００２３】
【図１】本実施形態に係るＨＤＤの全体構成を模式的に示すブロック図である。
【図２】本実施形態に係るＨＤＤにおいて、ＦＵＡコマンドを受信した場合に、ＦＵＡコマンドを優先してリオーダリングする方法を示す図である。
【図３】本実施形態に係るＨＤＤにおいて、シーケンシャルライトの手法を説明する図である。
【図４】本実施形態に係るＨＤＤにおいて、ＦＵＡコマンドを受信した場合に、シーケンシャルライトを利用してリオーダリングする方法を示す図である。
【図５】本実施形態において、リング・バッファ方式を利用するＨＤＤがＦＵＡコマンドを受信した場合におけるリオーダリングの方法を示す図である。
【図６】本実施形態に係るＨＤＤにおいて、ＦＵＡコマンドを受信した場合に、複数のリオーダリング方法から一つを選択する例を示す図である。
【図７】本実施形態に係るＨＤＤにおいて、ＦＵＡコマンドを受信した場合に、複数のリオーダリング方法から一つを選択する例を示すフロー・チャートである。
【図８】本実施形態に係るＨＤＤにおいて、ＦＵＡコマンドを受信した場合に、複数のリオーダリング方法から一つを選択する他の例を示すフロー・チャートである。
【図９】本実施形態に係るＨＤＤにおいて、ライト・キャッシュ制御に関する論理構成を示すブロック図である。
【図１０】本実施形態に係るＨＤＤにおいて、ライト・キャッシュ制御のためのライト・キャッシュ・テーブルの一例を示す図である。
【発明を実施するための形態】
【００２４】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
【００２５】
本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施形態は、データ記憶装置のライト・キャッシュＯＮの状態において、ライト・コマンドの実行順序（メディアへの書き込み順序）の決定手法に特徴を備え、特に、ホストへのコマンド完了通知をメディアへの書き込み完了後に行うライト・コマンドの実行順序の決定手法に特徴を備える。本発明の理解の容易のため、最初に、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）の全体構成の概略を説明する。
【００２６】
図１は、本実施の形態に係るＨＤＤ１の構成を模式的に示すブロック図である。図１に示すように、ＨＤＤ１は、密閉されたエンクロージャ１０内に、メディア（記録媒体）の一例である磁気ディスク１１、ヘッド素子部１２、アーム電子回路（アームエレクトロニクス：ＡＥ）１３、スピンドル・モータ（ＳＰＭ）１４、ボイス・コイル・モータ（ＶＣＭ）１５、そしてアクチュエータ１６を備えている。
【００２７】
ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（Ｒ／Ｗチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（以下、ＨＤＣ／ＭＰＵ）２３、及びメモリの一例であるＲＡＭ２４などの各ＩＣを備えている。尚、各回路構成は一つのＩＣに集積すること、あるいは、複数のＩＣに分けて実装することができる。
【００２８】
外部ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３によって受信され、Ｒ／Ｗチャネル２１、ＡＥ１３を介して、ヘッド素子部１２によって磁気ディスク１１に書き込まれる。また、磁気ディスク１１に記憶されているリード・データはヘッド素子部１２によって読み出され、そのリード・データは、ＡＥ１３、Ｒ／Ｗチャネル２１を介して、ＨＤＣ／ＭＰＵ２３から外部ホスト５１に出力される。
【００２９】
次に、ＨＤＤ１の各構成要素について説明する。磁気ディスク１１は、ＳＰＭ１４に固定されている。ＳＰＭ１４は所定の速度で磁気ディスク１１を回転する。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。本例の磁気ディスク１１は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部１２が設けられている。
【００３０】
各ヘッド素子部１２はスライダ（不図示）に固定されている。また、スライダはアクチュエータ１６に固定されている。アクチュエータ１６はＶＣＭ１５に連結され、回転軸を中心に揺動することによって、ヘッド素子部１２（及びスライダ）を磁気ディスク１１上において半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。
【００３１】
ヘッド素子部１２には、典型的には、磁気ディスク１１への記録データに応じて電気信号を磁界に変換する記録ヘッド、及び磁気ディスク１１からの磁界を電気信号に変換する再生ヘッドを備えている。なお、磁気ディスク１１は、１枚以上あればよく、記録面は磁気ディスク１１の片面あるいは両面に形成することができる。
【００３２】
続いて各回路部の説明を行う。ＡＥ１３は、複数のヘッド素子部１２の中からデータ・アクセスが行われる１つのヘッド素子部１２を選択し、選択されたヘッド素子部１２により再生される再生信号を一定のゲインで増幅（プリアンプ）し、Ｒ／Ｗチャネル２１に送る。また、Ｒ／Ｗチャネル２１からの記録信号を選択されたヘッド素子部１２に送る。
【００３３】
Ｒ／Ｗチャネル２１は、ホスト５１から転送されたデータについて、ライト処理を実行する。ライト処理において、Ｒ／Ｗチャネル２１はＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号に変換してＡＥ１３に供給する。また、ホスト５１にデータを供給する際にはリード処理を行う。リード処理において、Ｒ／Ｗチャネル２１はＡＥ１３から供給されたリード信号を一定の振幅となるように増幅し、取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、ＨＤＣ／ＭＰＵ２３に供給される。
【００３４】
ＨＤＣ／ＭＰＵ２３において、ＭＰＵはＲＡＭ２４にロードされたマイクロ・コードに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、ＭＰＵ上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣ／ＭＰＵ２３は、コマンド実行順序の管理、ヘッド素子部１２のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００３５】
ＨＤＣ／ＭＰＵ２３は、Ｒ／Ｗチャネル２１から取得した磁気ディスク１１からのリード・データを、ホスト５１に伝送する。磁気ディスク１１からのリード・データは、ＲＡＭ２４内のリード・バッファに一旦格納された後、ＨＤＣ／ＭＰＵ２３を介してホスト５１に転送される。また、ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３を介して、ＲＡＭ２４内のライト・バッファに一旦格納され、その後、所定のタイミングでＨＤＣ／ＭＰＵ２３を介して磁気ディスク１１に転送される。
【００３６】
続いて、本実施形態に係るＨＤＤ１のライト・キャッシュ処理について説明する。本形態のＨＤＤ１はライト・キャッシュがオンの状態であり、ライト・データのライト・バッファへの格納が完了したタイミングで、対応するライト・コマンドの完了通知をホスト５１に送信することができる。ホスト５１は、ＨＤＤ１からコマンド完了通知を受信した段階で、ＨＤＤ１に対して新たなコマンドを発行することができる。
【００３７】
また、本形態のＨＤＤ１は及びホスト５１は、ＨＤＤ１からホスト５１へのコマンド完了通知を、記録ディスク１１への書き込み完了後に行うライト・コマンドをサポートする。このようなライト・コマンドの最も典型的な一例は、ATA Standard 7で標準化されているＦＵＡ（Forced Unit Access）シリーズのコマンドである。ホスト５１からＦＵＡコマンドを取得したＨＤＤ１は、ライト・キャッシュがＯＮの状態にあっても、そのライト・データを磁気ディスク１１に書き込んだ後に、ホスト５１に対してコマンド完了通知を送信する。
【００３８】
ATA Standard 7において、ＦＵＡコマンドはＷＲＩＴＥ  ＤＭＡ  ＥＸＴＥＮＤ  ＦＵＡやＷＲＩＴＥ  ＤＭＡ  ＭＵＬＴＩＰＬＥ  ＥＸＴＥＮＤ  ＦＵＡなどを備えている。以下の説明においてはＦＵＡコマンドを例として本形態の説明を行う。また、以下において、特に明示のないライト・コマンドはＦＵＡ以外のコマンド（非ＦＵＡコマンド）であり、ライト・データがライト・バッファに格納された後、磁気ディスク１１に書き込む前に、コマンド完了通知がホスト５１に送られる。
【００３９】
以下において、未実行（磁気ディスク１１へのデータ書き込みが未完了）のライト・コマンドがキューされているタイミングで、ＨＤＤ１がホスト５１からＦＵＡコマンドを取得した場合における、コマンド実行順序の決定について説明する。ＨＤＤ１は、非ＦＵＡコマンドだけをキャッシュしている場合、効率的な内部処理を行うため、ＲＰＯ（Rotational Positioning Optimization）等のアルゴリズムを使用して、ライト・データの磁気ディスク１１への書き出し順序を最適化する。
【００４０】
ＦＵＡコマンドが発行された場合、ＨＤＤ１はそのコマンドの実行が完了するまで、つまりライト・データの磁気ディスク１１への書き込みが完了するまで、コマンド完了通知を返すことができず、ＨＤＤ１とホスト５１との間のインターフェースがビジー状態となる。このため、ＦＵＡコマンドをホスト５１から取得した場合、取得したライト・コマンドが非ＦＵＡコマンドである場合よりも、高い優先度においてライト・コマンドの実行順序を再決定（リオーダリング）することが好ましい。
【００４１】
好ましい例の一つにおいて、ＨＤＤ１は、ホスト５１からＦＵＡコマンドを受信すると、既にキャッシュされている他のライト・コマンドに対して最優先で、そのＦＵＡコマンドを実行する。つまり、キャッシュされている全てのライト・コマンドよりも前に、最初に新たに発行されたＦＵＡコマンドを実行する。
【００４２】
図２は、ＦＵＡコマンドを最初の順序で実行する例を示している。図２（ａ）に示すように、ＨＤＤ１は、５つのライト・コマンドWRを、WR１−WR２−WR３−WR４−WR５の順序で、ホスト５１から取得している。その後、図２（ｂ）に示すように、ライト・コマンドのリオーダリングを実行する。各ライト・コマンドは、非ＦＵＡコマンドであるので、ＲＰＯなどの従来のアルゴリズムに従って、リオーダリングを実行する。図２（ｂ）の例においては、実行順序は、WR２−WR３−WR１−WR５−WR４の順に設定されている。
【００４３】
図２（ｃ）に示すように、これらのライト・コマンドＲＷを実行する前に、ＨＤＤ１はホスト５１からＦＵＡコマンドを受信する。すると、ＨＤＤ１は、図２（ｄ）に示すように、ＦＵＡコマンドを最優先としてコマンドの実行順序を並べ替える。つまり、新たに取得したＦＵＡコマンドの実行順序を最初とする。このように、ＦＵＡコマンドの実行順序を未実行ライト・コマンドの内の最初の順序に設定することにとって、コマンド完了通知の返信遅れによるホスト５１の処理効率低下を抑制することができる。
【００４４】
ここで、好ましくは、ＦＵＡコマンドを実行順序の先頭に設定すると共に、その後に実行される他のライト・コマンドＷＲについて、その実行順序のリオーダリングを再実行する。図２（ｅ）の例において、ＦＵＡコマンドの実行順序を最初（１番目）に設定したことに応じて、ライト・コマンドＷＲ２の実行順序が、２番目から５番目に変更されている。
【００４５】
ＦＵＡコマンドを実行した後のヘッド素子部１２と磁気ディスク１１の位置関係を考慮すると、元の事項順序（WR２−WR３−WR１−WR５−WR４）が最も効率的な実行順序であるとは限らない。そこで、ＦＵＡコマンドの最後のＬＢＡ（Logical Block Address）を基準として、再度、リオーダリング処理を実行して、実行順序の並べ替えを行う。これによって、より効率的なライト・コマンド実行処理を実現することができる。
【００４６】
図３及び図４は、取得したＦＵＡコマンドの実行順序を、非ＦＵＡコマンドを取得した場合よりも高い優先度において決定する他の好ましい例を示している。本例において、ＦＵＡコマンドが互いに関連づけられた一連のコマンドに含まれる場合、その一連のコマンドをセットとして、最優先で実行順序を設定する。具体的には、ＨＤＤ１は、シーケンシャルライトと呼ぶライト・オペレーションをサポートしている。
【００４７】
シーケンシャルライトは、キャッシュされているライト・コマンドの中で、そのＬＢＡ（ライト・データ書き込むＬＢＡ）が予め定められた範囲内にある場合、それらライト・コマンドに対応するライト・データを、１回の書き込み処理で磁気ディスク１１へ書き込む。近接するライト・データの磁気ディスク１１への書き込みを、１回の書き込み処理として実行することによって、書き込み処理のオーバーヘッドを低減し、書き込み時間の短縮を図ることができる。
【００４８】
まず、図３を参照して、シーケンシャルライトが実行されるライト・コマンドの関係について説明する。２つのライト・コマンドの間において、第１のライト・コマンドの最終ＬＢと第２のライト・コマンドの先頭ＬＡＢとの差が、基準値以下の場合にシーケンシャルライトが実行される。例えば、図３（ａ）に示すように、２つのライト・コマンドのＬＢＡが連続している場合、ＨＤＤ１はこれら２つのライト・コマンドのシーケンシャルライトを実行する。図３（ａ）の例において、第１のライト・コマンドＷＲ１の先頭ＬＢＡが２００ｈ、その最終ＬＢＡは２７Ｆｈである。一方、第２のライト・コマンドＷＲ２の先頭ＬＢＡが２８０ｈ、その最終ＬＢＡは２ＦＦｈである。この場合、ＨＤＤ１は、ＬＢＡ２００ｈから２ＦＦｈまでのセクタに、ライト・データを１回の書き込み処理で磁気ディスク１１に書き込む。
【００４９】
あるいは、図３（ｂ）に示すように、２つのライト・コマンドのＬＢＡが重なっている場合に、ＨＤＤ１はシーケンシャルライトを実行する。つまり、第２のライト・コマンドＷＲ２の先頭ＬＢＡが、第１のライト・コマンドＷＲ１のＬＢＡ領域（先頭ＬＢＡから最終ＬＢＡまでの間の領域）に含まれている場合である。図３（ｂ）の例においては、第１のライト・コマンドＷＲ１の先頭ＬＢＡが２００ｈ、その最終ＬＢＡは２ＢＦｈである。一方、第２のライト・コマンドＷＲ２の先頭ＬＢＡが２８０ｈ、その最終ＬＢＡは２ＦＦｈである。この場合、ＨＤＤ１は、ＬＡＢが重なっているアドレス部分（２８０ｈ〜２ＢＦｈ）において、古いデータ（第１ライト・コマンドのライト・データ）を消去するDiscard処理を実行した後、ＬＢＡ２００ｈから２ＦＦｈまでのライト・データを１回の書き込み処理で磁気ディスク１１に書き込む。
【００５０】
あるいは、図３（ｃ）に示すように、２つのライト・コマンドのＬＢＡが連続していない、あるいは重なっていない場合であっても、その間隔が予め定められた基準値以下の場合には、ＨＤＤ１はシーケンシャルライトを実行する。図３（ｃ）の例において、第１のライト・コマンドＷＲ１の先頭ＬＢＡが２００ｈ、その最終ＬＢＡは２７Ｆｈである。一方、第２のライト・コマンドＷＲ２の先頭ＬＢＡが２９０ｈ、その最終ＬＢＡは２ＦＦｈである。例えば、基準値が４０ｈである場合、これら２つのライト・コマンドをシーケンシャルライトで一括に書き込む。この場合、ＨＤＤ１は、ＬＢＡ２８０ｈから２８Ｆｈまでは、磁気ディスク１１にデータを書き込むことなくスキップする。
【００５１】
図４は、シーケンシャルライトをサポートするＨＤＤ１において、ＦＵＡコマンドをホスト５１から受信した場合の実行順序決定処理を示している。本例において、ＨＤＤ１は、取得したＦＵＡコマンドとシーケンシャルライトを実行するライト・コマンドがキューされている場合、その一連のシーケンシャルライトを最優先として実行順序を決定する。
【００５２】
具体的には、図４（ａ）に示すように、ＨＤＤ１は、５つのライト・コマンドWRを、WR１−WR２−WR３−WR４−WR５の順序で、ホスト５１から取得している。続いて、図４（ｂ）に示すように、ライト・コマンドのリオーダリングを実行して、実行順序をWR２−WR３−WR１−WR５−WR４の順に設定する。図４（ｃ）に示すように、これらのライト・コマンドＷＲを実行する前に、ＨＤＤ１はホスト５１からＦＵＡコマンドを受信する。すると、ＨＤＤ１は、図４（ｄ）に示すように、ＦＵＡコマンドとシーケンシャルライトの関係にあるライト・コマンドを探す。本例においては、ライト・コマンドＷＲ３がＦＵＡコマンドとシーケンシャルライトの関係にあるため、これらが関連付けられる。
【００５３】
さらに、図４（ｅ）に示すように、ＦＵＡコマンド及びそれとシーケンシャルライトの関係にあるコマンド群が最優先として、その実行順序が最初に設定される。コマンド群の間においては、シーケンシャルライトの書き込み順序に従って順序決定される。本例においては、ライト・コマンドＷＲ３のライト・データがＦＵＡコマンドの前に書き込まれる。このように、ＦＵＡコマンドを受信した場合、それとシーケンシャルライトの関係にあるコマンド群をまとめて優先することによって、ホスト５１対するコマンド完了通知遅延の抑制と、ＨＤＤ１内における処理効率化を同時に図ることができる。なお、図２を参照して説明したように、互いに関連づけられたコマンド群を最優先で実行順序決定した後、これらの最終ＬＢＡを基準として、その後のライト・コマンドの実行順序を再設定することが好ましい。
【００５４】
図５は、取得したＦＵＡコマンドの実行順序を、非ＦＵＡコマンドを取得した場合よりも高い優先度において決定する他の好ましい例を示している。本例において、ライト・データを一時的に記憶するライト・バッファとして、リング・バッファ方式を使用する。リング・バッファ方式は、ホストからのライト・データを、前のアドレスから後ろのアドレスに時系列的に格納していく。ライト・バッファをその終端位置まで使い切った時には、ライト・バッファの先端位置に戻る。このとき、先端位置に記憶されているライト・データがまだ磁気ディスク１１に書き出されていない場合、ライト・バッファは新たなライト・データを格納することができないため、次のライト・データをホストから受信することができない。
【００５５】
このため、リング・バッファ方式においては、磁気ディスク１１への書き出し未完了のデータの内、最古のライト・データを早く磁気ディスク１１に書き出すことが好ましい。つまり、最も古い未実行コマンドを優先的に実行することが好ましい。本例において、ＨＤＤ１は、ＦＵＡコマンドを、未実行の最古のライト・コマンドよりも後の順序で実行する。
【００５６】
具体的に説明する。図５（ａ）に示すように、ＨＤＤ１は、ホストからWR１−WR２−WR３−WR４−WR５の順序で、ライト・コマンドを受信したとする。図５（ｂ）は、ＲＰＯに従ってリオーダリングした場合の各コマンドの実行順序を示している。本例では、WR２−WR３−WR１−WR５−WR４の順に設定される。ここで、図５（ｃ）に示すように、ＨＤＤ１がホスト５１からＦＵＡコマンドを受信する。図２の例に従えば、ＦＵＡコマンドは、図５（ｄ）に示すように、最初の実行順序に設定される。
【００５７】
しかし、上述のように、リング・バッファ方式のライト・バッファにおいては、最古のコマンドを優先して実行することがバッファの空き領域を確保することにつながる。そこで、本例において、図５（ｅ）に示すように、最初にホスト５１から取得したライト・コマンドＷＲ１の実行順序を最初に設定する。さらに、ＦＵＡコマンドをライト・コマンドＷＲ１の次の実行順序に設定する。これによって、リング・バッファ方式において空き領域を確保しつつ、ＦＵＡコマンドの実行遅延によるホスト５１の待ち時間の増加を抑制することができる。なお、ＦＵＡコマンドの早期実行の点からは、ＦＵＡコマンド実行順序を２番目に設定することが好ましいが、ＦＵＡコマンドを優先する限り、これに限定されるものではない。
【００５８】
上述のように、ホスト５１の待ち時間を短縮する観点からはＦＵＡコマンドを優先的に実行することが好ましい。しかし、ＨＤＤ１の処理制御においては、ＨＤＤ１のスループットなど、他の特性を優先することが好ましい場合がある。従って、ＨＤＤ１は、複数の異なる実行順序決定方法を備え、ＦＵＡコマンドを受信した場合、予め定められた基準に従って、複数の決定方法の中から最適な決定方法を選択することが好ましい。実行順序決定方法は、図２−４を参照して説明したように、ＦＵＡコマンドを最優先として実行順序を決定する決定方法など、ＦＵＡコマンドを受信した場合に非ＦＵＡコマンドよりも高い優先度で実行順序を決定する方法の他、ＦＵＡコマンドを考慮しないＲＰＯなど、ＦＵＡコマンドを非ＦＵＡコマンドと区別することなく実行順序を決定する方法を含む。
【００５９】
例えば、ＨＤＤ１は、図６（ａ）に示すよう、５つのライト・コマンドWRを、WR１−WR２−WR３−WR４−WR５の順序で、ホスト５１から取得する。続いて、図６（ｂ）に示すように、ＲＰＯなどのリオーダリングを実行して、実行順序をWR２−WR３−WR１−WR５−WR４の順に設定する。さらに、図６（ｃ）に示すように、これらのライト・コマンドWRを実行する前に、ＨＤＤ１はホスト５１からＦＵＡコマンドを受信する。
【００６０】
ここで、ＨＤＤ１は、予め定められている条件に従って実行順序決定方法を選択する。例えば、図６（ｄ）に示すように、ＨＤＤ１は、ＦＵＡコマンドに係わりなく、ＲＰＯに従ってライト・コマンドの実行順序が決定される。図６（ｄ）の例においては、ＦＵＡコマンドは６つのライト・コマンドの最後に設定されている。あるいは、図６（ｅ）に示すように、ＦＵＡコマンドを優先してリオーダリングを実行する。図６（ｅ）の例においては、新たに取得したＦＵＡコマンドを最初の実行順序に設定している。
【００６１】
以下においては、ＦＵＡを優先するＦＵＡ優先決定方法と、ＦＵＡコマンドに係わらずＨＤＤ１のスループット優先で（書き込み効率優先で）リオーダリングする方法（スループット優先決定方法）の２つを備える例を説明する。ＨＤＤ１が実行順序の決定方法を選択するいくつかの基準について説明を行う。
【００６２】
一つの好ましい例において、ＨＤＤ１は、ライト・バッファの空き容量に基づいて実行順序決定方法を選択する。具体的には、ライト・バッファの空き容量が多い場合、ＨＤＤ１はＦＵＡ優先決定方法を選択する。一方、少ない場合は、スループット優先決定方法を選択する。
【００６３】
図７のフロー・チャートを参照して、具体的に説明する。ＨＤＤ１は、ＦＵＡコマンドを含まない複数の未実行ライト・コマンドを、スループット優先決定方法に従って、リオーダリングする（Ｓ１１）。その後、ＨＤＤ１は、ＦＵＡコマンドを取得すると（Ｓ１２）、ライト・バッファの空き容量を計算し、その空き容量が予め定められた基準値未満であるかを判定する（Ｓ１３）。基準値未満である場合、ＨＤＤ１はＦＵＡコマンドを優先することなく、ＨＤＤ１のスループットを優先して、スループット優先決定方法を選択する（Ｓ１４）。
【００６４】
一方、ライト・バッファの空き容量が基準値以上である場合、ＨＤＤ１はＦＵＡコマンドを優先してコマンド実行順序を決定する（Ｓ１５）。つまり、ＨＤＤ１はＦＵＡ優先決定方法を選択してライト・コマンドの実行順序を決定する。このように、ＦＵＡコマンドを取得した場合、ライト・バッファの空き容量に従って実行順序決定方法を変化させることによって、ライト・バッファの空きが十分にあるときには、早くホスト５１とのインターフェースをレディにし、後続コマンドを受信するようにする。一方、ライト・バッファの空きに余裕がないときは、磁気ディスク１１への書き込みを優先してライト・バッファが早く空くように処理することができる。
【００６５】
他の好ましい例において、ＨＤＤ１は、既にキャッシュされているライト・コマンドのコマンド数（図６の例では５つ）に基づいて実行順序決定方法を選択する。具体的には、キャッシュ・されているライト・コマンド数が多い場合、ＨＤＤ１はスループット優先決定方法を選択する。一方、少ない場合は、ＦＵＡ優先決定方法を選択する。
【００６６】
図８のフロー・チャートを参照して、具体的に説明する。ＨＤＤ１は、ＦＵＡコマンドを含まない複数の未実行ライト・コマンドを、スループット優先決定方法に従って、リオーダリングする（Ｓ２１）。その後、ＨＤＤ１は、ＦＵＡコマンドを所得すると（Ｓ２２）、キャッシュされているライト・コマンド数を計算し、その数が予め定められた基準値未満であるかを判定する（Ｓ２３）。図６の例においては、ライト・コマンド数は５である。ライト・コマンド数が基準値以上である場合、ＨＤＤ１はＦＵＡコマンドを優先することなく、ＨＤＤ１のスループットを優先して、スループット優先決定方法を選択する（Ｓ２４）。
【００６７】
一方、キャッシュされているライト・コマンド数が基準値未満である場合、ＨＤＤ１はＦＵＡコマンドを優先してコマンド実行順序を決定する（Ｓ２５）。つまり、ＨＤＤ１はＦＵＡ優先決定方法を選択してライト・コマンドの実行順序を決定する。このように、ＦＵＡコマンドを取得した場合、ライト・コマンド数に従って実行順序決定方法を変化させることによってライト・バッファにキャッシュしているライト・コマンドが少ないときは、早くインターフェースをレディにし、後続コマンドを受信するようにし、キャッシュしているライト・コマンドが多いときには、磁気ディスク１１への書き込みを優先してライト・バッファが早く空くように処理する。
【００６８】
キャッシュされているライト・コマンド数の他に、キャッシュされているライト・コマンドに対応するライト・データのセクタ数に基づいて実行順序決定方法を選択することは、他の好ましい例である。セクタ数が多い場合、ＨＤＤ１はスループット優先決定方法を選択する。一方、少ない場合は、ＦＵＡ優先決定方法を選択する。ＨＤＤ１は、ＦＵＡコマンドを取得すると、キャッシュされているライト・コマンドのデータ・セクタ数（ライト・データ量）を合計し、それが基準値以上であるか判定する。基準値以上である場合、ＨＤＤ１はスループット優先決定方法を選択し、基準値未満である場合、ＦＵＡ優先決定方法を選択する。なお、セクタ数の算出に、新たに取得したＦＵＡコマンドのライト・データを含むことができる。このように、書き込むデータ・セクタ数に従って実行順序決定方法を変化させることによって、ライト・バッファにキャッシュしているライトデータが少ないときは、早くインターフェースをレディにして後続コマンドを受信するようにし、キャッシュしているライト・データが多いときには、磁気ディスク１１の書き込みを優先してライト・バッファが早く空くように処理する。
【００６９】
あるいは、キャッシュされているライト・コマンドの実行時間に基づいて実行順序決定方法を選択することは、他の好ましい例である。実行時間が基準値より短い場合、ＨＤＤ１はスループット優先決定方法を選択する。一方、実行時間が基準値より長い場合は、ＦＵＡ優先決定方法を選択する。ＨＤＤ１は、ＦＵＡコマンドを取得すると、スループット優先でリオーダリングしたのち、ＦＵＡの実行までに実行される各ライト・コマンドの実行時間を計算する。実行時間は、シーク時間、回転待ち時間、そして書き込み時間を含む。これらの実行時間を合計し、その値が基準値以上であるか判定する。基準値以上である場合、ＨＤＤ１はＦＵＡ優先決定方式を選択し、基準値未満である場合、スループット優先決定方式を選択する。
【００７０】
なお、実行時間の計算において、シーク時間と書き込み時間に対して、エラーによるリトライ処理と実行時のバラツキを考慮した係数をかけることが好ましい。このように、書き込みの実行時間に従って実行順序決定方法を変化させることによってＦＵＡコマンドの完了通知があまりにも遅くなることを防ぐことができる。つまり、メディアへの書き込みにおいて効率的な順序が選ばれたことにより、ＦＵＡコマンドの処理が後回しになると、場合によっては、ＦＵＡコマンドがタイムアウトになる可能性がある。実行時間を予測して、規定時間内にＦＵＡコマンドの完了通知をすることで、ＦＵＡコマンドのタイムアウトを防ぐことができる。なお、ＦＵＡコマンドを取得したとき、ＦＵＡコマンドを含まず、キャッシュされているライト・コマンドの実行時間のみを使用して、実行時間の基準値に対する判定をしてもよい。
【００７１】
本形態においては、ＨＤＣ／ＭＰＵ２３が上述のライト・キャッシュ制御を行う。そこで、ＨＤＣ／ＭＰＵ２３のライト・キャッシュ制御処理の詳細について説明する。図９は、ＨＤＤ１において、ライト・キャッシュ制御に関する構成を示すブロック図である。ＨＤＣ／ＭＰＵ２３は、ハード・ウェア構成として、ホスト・インターフェース２３１、ドライブ・インターフェース２３２及びメモリ・マネージャ２３３を備えている。マイクロ・コードがＭＰＵ上で動作することによって、ＭＰＵは、ホスト・インターフェース・マネージャ２３４、コマンド実行マネージャ２３５及びキャッシュ・マネージャ２３６として機能することができる。メモリＲＡＭ２４はコマンド及びデータを一時的に記憶し、ライト・バッファ２４１及びライト・キャッシュ・テーブル２４７として機能する。
【００７２】
ホスト・インターフェース２３１は、ホスト５１との間における実際のデータ伝送処理を実行し、データ伝送部として機能する。ドライブ・インターフェース２３２は、磁気ディスク１１との間（あるいはリード・ライト・チャネル２１との間）における実際のデータ入出力処理を行う。メモリ・マネージャ２３３はＲＡＭ（メモリ）２４のデータ記憶を制御し、ＨＤＣ／ＭＰＵ２３内の他の機能ブロックとＲＡＭ２４との間におけるコマンド及びユーザ・データ（ライト／リード・データ）の仲介処理を行う。
【００７３】
ホスト・インターフェース・マネージャ２３４はホスト・インターフェース２３１を管理するデータ伝送制御部として機能し、ホスト・インターフェース２３１との間において所定の通知あるいは命令の授受を行う。キャッシュ・マネージャ２３６は、キューされているライト・コマンドの再スケジューリングを実行し、適切なコマンド実行順序を決定する。コマンド実行マネージャ２３５は、キャッシュ・マネージャ２３６によって決定された順序に従って、コマンドの実行を制御する。さらに、ドライブ・インターフェース２３２を制御することによって、磁気ディスク１１との間のデータ書き込み及びデータ読み出しを制御する。
【００７４】
図１０は、ライト・キャッシュ・テーブル２４７の一例を示している。図１０において、コマンド番号は、ライト・キャッシュ・テーブル２４７における各コマンドの識別子である。コマンド・タイプは、各ライト・コマンドがＦＵＡコマンドであるか否かを示す。データ長は、ライト・コマンドに対応するライト・データのデータ長、バッファ内開始位置はライト・バッファ内におけるライト・データの記憶開始位置である。磁気ディスクへの書き込み順序は、各ライト・データの磁気ディスク１１への書き出し順序であり、図の例では、Wr1から順に磁気ディスク１１に書き出される。
【００７５】
ライト・コマンドのリオーダリング処理の動作について説明する。ホスト５１からライト・コマンド及びライト・データをホスト・インターフェース２３１が受信すると、メモリ・マネージャ２３３は、ライト・バッファ２４１にライト・データを格納する。キャッシュ・マネージャ２３６は、ライト・コマンドをライト・キャッシュ・テーブル２４７に記録する。つまり、ホスト・インターフェース２３１は、ホスト・インターフェース・マネージャ２３４、を介して、キャッシュ・マネージャ２３６にライト・コマンドの受信、そのコマンド・タイプ、ＬＢＡ（Logical Block Address）、データ長を通知する。
【００７６】
キャッシュ・マネージャ２３６は、ライト・コマンドを受信すると、ライト・キャッシュ・テーブル２４７の空いているレコードの各エントリに、ライト・コマンドに関するデータを記録する。ライト・キャッシュ・テーブル２４７への登録タイミングにおいて、このライト・コマンドの実行順序は、例えば、最後の順序とすることができる。
【００７７】
受信したライト・コマンドが非ＦＵＡコマンドの場合、キャッシュ・マネージャ２３６は、ホスト・インターフェース・マネージャ２３４に、コマンド完了通知をホスト５１に返すように要求する。ホスト・インターフェース・マネージャ２３４は、ホスト・インターフェース２３１を介して、ホスト５１にコマンド完了通知を返す。さらに、キャッシュ・マネージャ２３６は、各ライト・コマンドの実行順序、つまり、ライト・データの磁気ディスク１１への書き出し順序のリオーダリングを実行する。このとき、キャッシュ・マネージャ２３６は、上述の実行順序決定方法に従って実行順序を決定する。
【００７８】
一方、受信したライト・コマンドがＦＵＡコマンドの場合、コマンド完了通知をホスト５１に返すことなく、キャッシュ・マネージャ２３６は、各ライト・コマンドの実行順序を決定する。この際、キャッシュ・マネージャ２３６は、上述のように、所定の条件に依存する実行順序決定方法に従って、ライト・コマンドのリオーダリングを実行する。
【００７９】
その後、キャッシュ・マネージャ２３６は、コマンド実行マネージャ２３５に実行すべきライト・コマンドを通知する。コマンド実行マネージャ２３５は、ドライブ・インターフェース２３２に、実行ライト・コマンドのライト・データを磁気ディスク１１に書き込むことを指示する。ドライブ・インターフェース２３２は、メモリ・マネージャ２３３を介して、ライト・バッファ２４１からライト・データを取得し、磁気ディスク１１に書き込むためにそのライト・データを転送する。
【００８０】
磁気ディスク１１への書き込みが完了すると、ドライブ・インターフェース２３２からコマンド実行マネージャ２３５に、書き込みが完了したことが通知される。ＦＵＡコマンドの実行が完了した場合、コマンド実行マネージャ２３５は、ホスト・インターフェース・マネージャ２３４に、ＦＵＡコマンドの完了通知をホスト５１に送信することを要求する。ホスト・インターフェース・マネージャ２３４は、その要求に応答して、ホスト５１にＦＵＡコマンドの完了通知を返す。
【００８１】
尚、上記の説明は、本発明の実施形態を説明するものであり、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本形態のライト・バッファ制御を、磁気ディスク以外のメディアを利用するデータ記憶装置に適用することができる。
【符号の説明】
【００８２】
１０  エンクロージャ、１１  磁気ディスク、１２  ヘッド素子部、
１３  アーム・エレクトロニクス、１４  スピンドル・モータ、
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  リード・ライト・チャネル、２２  モータ・ドライバ・ユニット、５１  ホスト
２３１  ホスト・インターフェース、２３２  ドライブ・インターフェース、
２３３  メモリ・マネージャ、２３４  ホスト・インターフェース・マネージャ
２３５  コマンド実行マネージャ、２３６  キャッシュ・マネージャ
【図１】
2012038330.tif 000003
【図２】
2012038330.tif 000004
【図３】
2012038330.tif 000005
【図４】
2012038330.tif 000006
【図５】
2012038330.tif 000007
【図６】
2012038330.tif 000008
【図７】
2012038330.tif 000009
【図８】
2012038330.tif 000010
【図９】
2012038330.tif 000011
【図１０】
2012038330.tif 000012