(57)【要約】【課題】ＣＣＷプログラムの先読みにおける、入出力装置の状態値の予測精度を向上させ、先読みしたコマンドと実際に実行すべきコマンドとの不整合を回避する。【解決手段】ＣＣＷ読み込み部２０において、制御対象となる入出力装置１００ごとに、ＣＣＷのコマンドの実行結果として入出力装置１００から返される状態値の予測値が設定された結果予測表４０を参照する。そして、予測値に基づいて、メモリ１０に格納されたＣＣＷプログラムから先読み対象のコマンドを先読みし、ＣＣＷ実行部３０に送信する。一方、ＣＣＷ実行部３０では、先読みされたコマンドを順次実行し、実行結果の状態値を制御対象の入出力装置１００から受信する。そして、受信された状態値と前記予測ステップにより予測された状態値とが同一でないときに、ＣＣＷ読み込み部２０に予測失敗を通知する一方、ＣＣＷ読み込み部２０において、結果予測表４０を更新する。【選択図】  図１
2010079612.tif 000002
【特許請求の範囲】
【請求項１】
ＣＣＷプログラムの制御対象となる入出力装置ごとに、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値について、入出力装置から返される確率の高さを示すパラメータが設定されたテーブルを参照し、そのパラメータに基づいて各コマンドの実行結果の状態値を予測する予測ステップと、
前記予測ステップにより予測された各コマンドの実行結果の状態値に基づいて先読み対象のコマンドを決定し、メモリに格納されたＣＣＷプログラムから、全ての先読み対象のコマンドを先読みする先読みステップと、
前記先読みステップにより全ての先読み対象のコマンドの先読みが完了したときに、先読みされたコマンドを順次実行する実行ステップと、
前記実行ステップによりコマンドが実行されるごとに、コマンドの実行結果としての状態値を制御対象の入出力装置から受信する受信ステップと、
前記受信ステップにより状態値が受信されたときに、その受信された状態値と前記予測ステップにより予測された状態値とが同一か否かを判定する判定ステップと、
前記判定ステップにより、前記受信された状態値と前記予測された状態値とが異なると判定されたときに、前記テーブルに設定された、前記受信された状態値に対応するパラメータの値を、前記予測された状態値に対応するパラメータの値に対して相対的に増加させるように更新する第１の更新ステップと、
をコンピュータに実現させることを特徴とするＣＣＷ先読み処理プログラム。
【請求項２】
前記テーブルには、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値のうちパラメータの値が最も大きい状態値が、入出力装置から返される確率の最も高い予測値としてコマンドごとにさらに設定されており、
前記予測ステップは、各コマンドの前記予測値を参照し、その予測値を各コマンドの実行結果の状態値として予測することを特徴とする請求項１記載のＣＣＷ先読み処理プログラム。
【請求項３】
前記予測値として設定された状態値のパラメータの値よりも、前記受信された状態値のパラメータの値のほうが大きいときに、前記予測値を前記受信された状態値で更新する第２の更新ステップをさらに含むことを特徴とする請求項２記載のＣＣＷ先読み処理プログラム。
【請求項４】
前記先読みステップは、先読み対象のコマンドを決定するときに、ＣＣＷプログラムのコマンドの中に、他のコマンドにブランチさせるブランチ命令が含まれており、かつ、そのブランチ命令により実行されるコマンドとそのブランチ命令の直前に読み込まれるコマンドとが一致している場合には、そのブランチ命令の直前に読み込まれるコマンドまでを先読み対象のコマンドとして決定し、先読みを行うことを特徴とする請求項１〜請求項３のいずれか１つに記載のＣＣＷ先読み処理プログラム。
【請求項５】
前記テーブルには、前記制御対象の入出力装置ごとに、先読みにおける予測が成功した回数を示す成功数及び先読みにおける予測が失敗した回数を示す失敗数がさらに設定されており、
前記先読みステップは、成功数が失敗数以上であるときにのみ、先読みをすることを特徴とする請求項１〜請求項４のいずれか１つに記載のＣＣＷ先読み処理プログラム。
【請求項６】
ＣＣＷプログラムの制御対象となる入出力装置ごとに、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値について、入出力装置から返される確率の高さを示すパラメータが設定されたテーブルを参照し、そのパラメータに基づいて各コマンドの実行結果の状態値を予測する予測手段と、
前記予測手段により予測された各コマンドの実行結果の状態値に基づいて先読み対象のコマンドを決定し、メモリに格納されたＣＣＷプログラムから、全ての先読み対象のコマンドを先読みする先読み手段と、
前記先読み手段により全ての先読み対象のコマンドの先読みが完了したときに、先読みされたコマンドを順次実行する実行手段と、
前記実行手段によりコマンドが実行されるごとに、コマンドの実行結果としての状態値を制御対象の入出力装置から受信する受信手段と、
前記受信手段により状態値が受信されたときに、その受信された状態値と前記予測手段により予測された状態値とが同一か否かを判定する判定手段と、
前記判定手段により、前記受信された状態値と前記予測された状態値とが異なると判定されたときに、前記テーブルに設定された、前記受信された状態値に対応するパラメータの値を、前記予測された状態値に対応するパラメータの値に対して相対的に増加させるように更新する第１の更新手段と、
を含んで構成されたことを特徴とするＣＣＷ先読み処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力装置を制御するチャネルコマンドワードを先読みする技術に関する。
【背景技術】
【０００２】
一般に、コンピュータにおいて、入出力装置との間の入出力操作をＣＰＵから独立させて進行させるべく、主記憶装置及び入出力装置との間の情報転送を制御するチャネルが用いられる。チャネルでは、入出力装置に対する制御指示が記述されたＣＣＷ（チャネルコマンドワード：Channel Command Word）をメモリから読み出す。このＣＣＷは、１語８バイトで構成され、入出力装置を制御するコマンドやＣＣ（Chain-Command）フラグ等の各種の制御フラグ等を含むものである。そして、読みだしたＣＣＷのコマンドを実行し、入出力装置に対して動作指示を行う。
【０００３】
また、ＣＣＷでは、各コマンドの実行結果として入出力装置から返される状態値に応じて、次に処理されるコマンドが変わる。具体例を挙げると、あるコマンドの実行結果の状態値が「０Ｃ」のときには、ＣＣＷに含まれるコマンドのうち１語進んだ先のコマンドを実行し、状態値が「４Ｃ」のときには、２語進んだ先のコマンドを実行する、という具合である。また、コマンドのなかには、入出力操作を行わせるもの以外に、任意の１語のコマンドを実行させるブランチ命令としての「ＴＩＣ」等も存在する。
【０００４】
ここで、マルチプロセッサを実装するコンピュータ等においては、並列処理を効率的に行うべく、メモリからＣＣＷを読み出すＣＣＷ読み出し部と、読みだしたＣＣＷのコマンドを実行するＣＣＷ実行部と、が別々に構成されている場合がある。このような構成においては、ＣＣＷ読み出し部及びＣＣＷ実行部の間の通信量を削減するべく、コマンドの先読みが行われる。先読みとは、ＣＣＷ読み出し部において複数のコマンドを読み出し、読みだしたコマンドをまとめてＣＣＷ実行部に送信する一方、ＣＣＷ実行部において、受信した複数のコマンドを１語ずつ順次実行するものである。
【０００５】
そして、この先読みにおいては、実際にコマンドを実行してその実行結果の状態値が入出力装置から返される前に、次に処理するコマンドを読み込んでおく必要がある。このため、全てのコマンドにおいて必ず特定の状態値が返されると仮定した上で、順次コマンドの先読みを行う。しかし、実際には、仮定した状態値とは異なる状態値が入出力装置から返されることがあり、先読みしたコマンドと、実際に入出力装置から返された状態値により次に実行すべきコマンドと、の間に不整合が生じることがある。上述の具体例においては、全てのコマンドの実行結果として入出力装置から返される状態値が「０Ｃ」であることを前提として順次コマンドを読み込んでも、実際には、状態値は「０Ｃ」とは限らず、「４Ｃ」が返されることもある。また、例えば、実行結果として入出力装置から返される状態値が「０Ｃ」であることを前提とし、次に先読みしたコマンドが「ＴＩＣ」であった場合において、「ＴＩＣ」が１つ前のコマンドを実行させるものであったときなどには、無限ループを引き起こすこともある。このため、ＣＣＷに先読み制御ビットを設け、入出力装置及びコマンドの種別に応じて、先読みするコマンドを制御する技術が提案されている。
【特許文献１】特開昭６３−２４５５４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、このように入出力装置及びコマンドの種別に応じて先読みするコマンドを制御する場合であっても、実際にコマンドを実行してその実行結果の状態値が得られる前にコマンドを先読みしなければならないことには変わりはない。このため、入出力装置及びコマンドの種別ごとに、コマンドの実行結果の状態値を予測し、その予測した状態値が入出力装置から返されると仮定した上で、先読みするコマンドを制御する必要がある。しかし、入出力装置及びコマンドの種別が同じであっても、実際にコマンドを実行した結果、常に同じ状態値が返されるとは限らない。また、実際には予測した状態値よりも他の状態値のほうが頻繁に入出力装置から返されることもある。このような場合には、依然として、先読みしたコマンドと実際の入出力装置の状態値の相違により、次に実行すべきコマンドとの間に不整合が生じることが多くあった。
【０００７】
以上のような問題点に鑑み、実際のコマンドの実行結果の状態値を学習し、その学習結果に基づいて、コマンドの実行結果の状態値を予測して先読みを行うことで、先読みにおける予測の精度を向上させ、不整合を回避することを目的とする。
【課題を解決するための手段】
【０００８】
ＣＣＷプログラムの制御対象となる入出力装置ごとに、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値について、入出力装置から返される確率の高さを示すパラメータが設定されたテーブルを参照する。そして、そのパラメータに基づいて各コマンドの実行結果の状態値を予測し、その予測した各コマンドの実行結果の状態値に基づいて先読み対象のコマンドを決定する。さらに、メモリに格納されたＣＣＷプログラムから、全ての先読み対象のコマンドを先読みする。
【０００９】
また、全ての先読み対象のコマンドの先読みが完了したときに、先読みされたコマンドを順次実行し、コマンドを実行するごとに、コマンドの実行結果としての状態値を制御対象の入出力装置から受信する。そして、入出力装置から状態値が受信されたときに、その受信された状態値と予測された状態値とが同一か否かを判定する。その結果、前記受信された状態値と前記予測された状態値とが異なるときに、テーブルに設定された、受信された状態値に対応するパラメータの値を、予測された状態値に対応するパラメータの値に対して相対的に増加させるように更新する。
【発明の効果】
【００１０】
ＣＣＷプログラムのコマンドの先読みを行うときに、各状態値が入出力装置から返される確率の高さを示すパラメータの値に基づいて、入出力装置から返される状態値が予測され、その予測に基づいてコマンドの先読みが行われる。また、その一方で、このパラメータの値には、実際に実行結果として入出力装置から受信された状態値の内容が反映される。このため、コマンドの先読みにおいて、実際に実行結果として入出力装置から受信される確率の高い状態値を予測することが可能となり、予測の精度が向上する。そして、先読みしたコマンドと実際の入出力装置の状態値により次に実行すべきコマンドとの間の不整合を回避することができ、先読み可能なコマンドの数が増加する。その結果、ＣＣＷ読み出し部及びＣＣＷ実行部の間の通信量を削減することができ、入出力装置制御を効率化することができる。
【発明を実施するための最良の形態】
【００１１】
図１は、ＣＣＷ先読み機構を具現化した装置の一例の全体構成を示す。この装置の各構成要素の機能は、少なくともＣＰＵ（Central Processing Unit）及び記憶手段を備えたコンピュータにおいて、ＣＣＷ先読み処理プログラムをロードすることで実現される。そして、本装置は、図１に示すように、ＣＣＷプログラムが格納されたメモリ１０，ＣＣＷ読み出し部２０，ＣＣＷ実行部３０を含んで構成され、さらに、入出力装置１００と接続されている。この入出力装置１００には、磁気ディスク等の外部記憶装置やプリンタ等、コンピュータとの間でデータの送受信を行う様々な装置が該当する。さらに、本装置は、結果予測表４０，ＣＰＡ（Channel Program Address）リスト５０，入出力装置表６０のテーブルを含む。また、ＣＣＷ読み出し部２０からＣＣＷ実行部３０へとデータを送信するために、ＣＯＢ（Channel Operation Buffer）７０のデータ構造（領域）を用いる。一方、ＣＣＷ実行部３０からＣＣＷ読み出し部２０へとデータを送信するために、ＣＩＢ（Channel Interruption Buffer）８０のデータ構造を用いる。なお、図１では、入出力装置１００が１つのみ接続されているように図示されているが、１つに限られない。
【００１２】
次に、本装置の各構成要素について説明する。
メモリ１０には、上述のように、ＣＣＷプログラムが格納されている。
ＣＣＷ読み出し部２０は、少なくとも、メモリ１０に格納されたＣＣＷを読み出し、ＣＯＢ７０に設定してＣＣＷ実行部３０へ送信する。なお、ＣＣＷ読み出し部２０により、少なくとも、先読みステップ及び先読み手段の機能が実現される。そして、このＣＣＷ読み出し部２０は、装置識別部２０Ａ，結果予測部２０Ｂ及び結果学習部２０Ｃを含んで構成される。
【００１３】
装置識別部２０Ａは、入出力装置表６０を参照し、ユーザアプリケーション等（図示せず）から通知される、制御対象となる入出力装置１００の機番に基づいて、入出力装置名を取得する。
【００１４】
結果予測部２０Ｂは、結果予測表４０のうち、入出力装置１００に対応した表を参照し、コマンドごとに実行結果の状態値の予測値を取得する。なお、結果予測部２０Ｂにより、予測ステップ及び予測手段の機能が実現される。
【００１５】
結果学習部２０Ｃは、ＣＣＷ実行部３０から受信したＣＩＢ８０に含まれる実行結果に基づき、結果予測表４０のうち、入出力装置１００に対応した表を更新する。なお、結果学習部２０Ｃにより、第１の更新ステップ，第１の更新手段，第２の更新ステップ及び第３の更新ステップの機能が実現される。
【００１６】
ＣＣＷ実行部３０は、少なくとも、ＣＣＷ読み出し部２０により読み出されたコマンドを実行して入出力装置１００を制御するとともに、入出力装置１００から返される状態値を受信する。なお、ＣＣＷ実行部３０により、少なくとも、実行ステップ，実行手段，受信ステップ及び受信手段の機能が実現される。そして、このＣＣＷ実行部３０は、結果比較部３０Ａ及び結果通知部３０Ｂを含んで構成される。
【００１７】
結果比較部３０Ａは、先読みにおける状態値の予測値と、コマンドの実行結果として入出力装置から実際に返された状態値とを比較する。そして、両者が一致した場合には先読みにおける予測が成功したと判定する一方、両者が不一致の場合には、予測が失敗したと判定する。なお、結果比較部３０Ａにより、判定ステップ及び判定手段の機能が実現される。
【００１８】
結果通知部３０Ｂは、先読みが成功したか否かの結果を含んだ情報をＣＩＢ８０に設定し、ＣＣＷ読み出し部２０に送信する。
結果予測表４０は、入出力装置ごとに各コマンドの状態値の予測値が設定されるものである。そして、図２に示すように、コマンド表として、コマンドと、コマンドの状態値の予測値と、各状態値が入出力装置１００から返される確率の高さを示す予測決定点数（パラメータ）と、を含んで構成される。なお、コマンドの状態値の予測値には、予測決定点数が最も高い状態値が設定され、予測決定点数は、コマンドごとに各状態値の点数の合計が１００になるように設定される。そして、この表は、接続された入出力装置１００ごとに夫々対応させて登録されている。また、結果予測表４０はさらに、入出力装置１００ごとに、先読みするコマンドの最大数を示す有効最大数，先読みにおける予測の成功数及び失敗数を含んで構成される。
【００１９】
ＣＰＡリスト５０は、先読みしたコマンドのアドレスを保持しておき、先読み予測が失敗したときなどに使用するためのものであり、図３に示すように、コマンド及びコマンドのアドレスを含んで構成される。
【００２０】
入出力装置表６０は、接続された入出力装置の機番及び名称の対応表であり、図４に示すように、入出力装置の機番及び入出力装置名を含んで構成される。
ＣＯＢ７０は、図５に示すように、ＣＣＷ読み込み部２０において先読みしたコマンドの数が格納されるＰＦＣ（Prefetch Count）を含む。このＰＦＣの値が「０」であれば先読みが無効であることを示し、「１以上」であれば、先読みが有効であり、その値は先読みしたコマンドの数を示す（但し、先頭のコマンドを除く）。さらに、先読みされたコマンドが、先読みされた順に格納される。また、制御対象となる入出力装置の入出力装置名がさらに格納される。
【００２１】
ＣＩＢ８０は、図６に示すように、コマンドの実行結果として入出力装置で生成された状態値が格納されるＤＳＦ（Device Status Field）を含む。さらに、ＣＩＢ８０は、先読みにおける予測が成功したか失敗したかを判定するために使用されるＲＰＣ（Residual Prefetch Count）を含む。このＲＰＣの値が「０」であれば、予測が成功したか、若しくは先読み処理自体が行われていないことを示す。また、「１以上」であれば、予測が失敗したことを示し、その値は、先読み予測が失敗したコマンド及び予測が失敗したことにより未処理のコマンドの数を示す。
≪本装置における処理内容の説明≫
次に、本装置における処理内容について、フローチャートを用いて説明する。
【００２２】
図７及び図８は、ＣＣＷ読み出し部２０における処理を示す。
ステップ１（図ではＳ１と略記する。以下同様）では、先読みを有効にする。具体的には、先読みを行うか否かの判定に用いる変数に、有効であることを示す値を設定する（prefetch_sts = valid）。
【００２３】
ステップ２では、ＣＯＢ７０のＰＦＣに０を設定する。
ステップ３では、装置識別部２０Ａにおいて実行される装置識別処理のサブルーチンを実行する。
【００２４】
ステップ４では、装置識別処理により識別された入出力装置名に対応する表が、結果予測表４０に設定されているか否かを判定する。入出力装置名に対応する表が設定されていれば、ステップ５に進み（Ｙｅｓ）、入出力装置名に対応する表が設定されていなければ、ステップ６に進む（Ｎｏ）。
【００２５】
ステップ５では、先読み判定処理のサブルーチンを実行する。
ステップ６では、先読みを無効にする（prefetch_sts = invalid）。
ステップ７では、ＣＣＷのコマンドを１語フェッチ（読み込み）する。
【００２６】
ステップ８では、フェッチしたコマンド及びそのアドレスを、ＣＰＡリストに設定する。
ステップ９では、先読みが有効であるか否かを判定する（prefetch_sts == valid）。先読みが有効であれば、ステップ１０に進み（Ｙｅｓ）、先読みが無効であれば、ステップ１７に進む（Ｎｏ）。
【００２７】
ステップ１０では、ＣＯＢ７０のＰＦＣが、結果予測表４０に設定された、制御対象の入出力装置名に対応する有効最大数以上であるか否かを判定する。ＰＦＣが有効最大数以上であれば、ステップ１７に進み（Ｙｅｓ）、ＰＦＣが有効最大数より小さければ、ステップ１１に進む（Ｎｏ）。
【００２８】
ステップ１１では、ＣＣＷのＣＣフラグが立っているか否かを判定する。ＣＣフラグが立っていれば、ステップ１２に進み（Ｙｅｓ）、ＣＣフラグが立っていなければ、ステップ１７に進む（Ｎｏ）。
【００２９】
ステップ１２では、最後にフェッチしたコマンドのアドレスと、その直前にフェッチしたコマンドのアドレスと、が異なるか否かを判定する。両者が異なれば、ステップ１３に進み（Ｙｅｓ）、両者が同一であれば、ステップ１７に進む（Ｎｏ）。
【００３０】
ステップ１３では、結果予測部２０Ｂにおいて実行される結果予測処理のサブルーチンを実行する。
ステップ１４では、結果予測処理により取得された、実行結果の状態値の予測値に基づいて、さらにコマンドを１語フェッチする。例えば、予測値が「０Ｃ」であれば１語進んだ先のコマンドをフェッチし、予測値が「４Ｃ」であれば２語進んだ先のコマンドをフェッチする。
【００３１】
ステップ１５では、フェッチしたコマンド及びそのアドレスを、ＣＰＡリストに設定する。
ステップ１６では、ＣＯＢ７０のＰＦＣをインクリメントする。
【００３２】
ステップ１７では、ＣＣＷ実行部３０に対し、ＣＯＢ７０を送信する。このとき、フェッチしたコマンドをＣＯＢ７０に設定した上で送信する。
ステップ１８では、ＣＣＷ実行部３０からＣＩＢ８０を受信したか否かを判定する。ＣＩＢ８０を受信したときには、ステップ１９に進み（Ｙｅｓ）、ＣＩＢ８０を受信していないときには待機する（Ｎｏ）。
【００３３】
ステップ１９では、結果学習部２０Ｃにおいて実行される結果学習処理のサブルーチンを実行する。
ステップ２０では、ＣＩＢ８０のＲＰＣが０であるか否かを判定する。ＲＰＣが０であれば、ステップ２１に進み（Ｙｅｓ）、ＲＰＣが０でなければ、ステップ２２に進む（Ｎｏ）。
【００３４】
ステップ２１では、ＣＣＷのＣＣフラグが立っているか否かを判定する。ＣＣフラグが立っていれば、ステップ７に戻り（Ｙｅｓ）、ＣＣフラグが立っていなければ、処理を終了する（Ｎｏ）。
【００３５】
ステップ２２では、ＣＯＢ７０のＰＦＣに０を設定する。
ステップ２３では、先読み判定処理のサブルーチンを実行する。
図９は、先読み判定処理のサブルーチンの内容を示す。
【００３６】
ステップ３１では、結果予測表４０のうち、制御対象の入出力装置に対応する表において、成功数及び失敗数を取得する。
ステップ３２では、失敗数が成功数より多いか否かを判定する。失敗数が成功数よりも多ければ、ステップ３３に進み（Ｙｅｓ）、失敗数が成功数以下であれば、処理を終了する。
【００３７】
ステップ３３では、先読みフラグを無効にする。
図１０は、装置識別部２０Ａにおいて実行される装置識別処理のサブルーチンの内容を示す。
【００３８】
ステップ４１では、入出力装置表６０を参照し、制御対象となる入出力装置の機番に基づいて入出力装置名を取得する。
ステップ４２では、ＣＯＢ７０の入出力装置名に、取得した入出力装置名を設定する。
【００３９】
図１１は、結果予測部２０Ｂにおいて実行される結果予測処理のサブルーチンの内容を示す。
ステップ５１では、結果予測表４０を参照し、入出力装置名に対応する表を取得する。
【００４０】
ステップ５２では、取得した結果予測表４０から、最後にフェッチされたコマンドに対応する予測値を取得し、これを返す。
図１２は、結果学習部２０Ｃにおいて実行される結果学習処理のサブルーチンの内容を示す。
【００４１】
ステップ６１では、制御対象の入出力装置に対応する表が、結果予測表４０に設定されているか否かを判定する。入出力装置に対応する表が設定されていれば、ステップ６２に進み（Ｙｅｓ）、入出力装置に対応する表が設定されていなければ、処理を終了する（Ｎｏ）。なお、以下、この処理においては、結果予測表４０のうち、制御対象の入出力装置に対応する表を処理対象とすることを前提とする。
【００４２】
ステップ６２では、ＣＩＢ８０のＲＰＣが０か否かを判定する。ＲＰＣが０であれば、ステップ６３に進み（Ｙｅｓ）、ＲＰＣが０でなければ、ステップ６４に進む（Ｎｏ）。
ステップ６３では、結果予測表４０の成功数をインクリメントする。
【００４３】
ステップ６４では、結果予測表４０において、ＣＣＷ実行部３０により最後に実行されたコマンドの予測値として設定されている状態値に対応する予測決定点数をデクリメントする。なお、この最後に実行されたコマンドは、ＲＰＣの値により特定することが可能である。
【００４４】
ステップ６５では、ＣＩＢ８０のＤＳＦに実際に設定された状態値に対応する予測決定点数をインクリメントする。なお、ステップ６４及び６５の処理により、予測値として設定されている状態値に対応する予測決定点数から、ＣＩＢ８０のＤＳＦに実際に設定された状態値に対応する予測決定点数へと、１点移動したこととなる。
【００４５】
ステップ６６では、結果予測表４０において、ＣＣＷ実行部３０により最後に実行されたコマンドにおける予測値及び予測決定点数が最大の状態値が異なっていれば、予測値を、予測決定点数が最大の状態値で更新する。なお、予測決定点数が同一の状態値が複数あるときには、予測決定点数が最後にインクリメントされた状態値を予測値とすればよい。
【００４６】
ステップ６７では、結果予測表４０の失敗数をインクリメントする。
図１３は、ＣＣＷ実行部３０による処理を示す。
ステップ７１では、ＣＩＢ８０のＲＰＣに、ＣＯＢ７０のＰＦＣを設定する。
【００４７】
ステップ７２では、ＣＩＢ８０に設定されたコマンドのうち次の順番のものを、実行対象のコマンドとして決定する。
ステップ７３では、実行対象とされたコマンドを実行する。
【００４８】
ステップ７４では、結果比較処理のサブルーチンを実行する。
ステップ７５では、先読みの予測が成功したか否かを判定する。先読み予測が成功していれば、ステップ７６に進み（Ｙｅｓ）、先読み予測が失敗していれば、ステップ７９に進む（Ｎｏ）。
【００４９】
ステップ７６では、ＣＩＢ８０のＲＰＣが０であるか否かを判定する。ＲＰＣが０であれば、ステップ７９に進み（Ｙｅｓ）、ＲＰＣが０でなければステップ７７に進む（Ｎｏ）。
【００５０】
ステップ７７では、ＣＩＢ８０に設定されたコマンドのうち次の順番のものを、実行対象のコマンドとして決定する。
ステップ７８では、ＣＩＢ８０のＲＰＣをデクリメントする。
【００５１】
ステップ７９では、結果通知処理のサブルーチンを実行する。
図１４は、結果比較部３０Ａにおいて実行される結果比較処理のサブルーチンの内容を示す。
【００５２】
ステップ８１では、結果予測表４０のうち、制御対象の入出力装置に対応する表において、最後に実行されたコマンドに対応する予測値を取得する。
ステップ８２では、コマンドの実行結果として入出力装置から返された状態値が予測値と同一か否かを判定する。状態値が予測値と同一であれば、ステップ８３に進み（Ｙｅｓ）、状態値が予測値と同一でなければ、ステップ７４に進む（Ｎｏ）。
【００５３】
ステップ８３では、先読みの予測が成功した情報を返す。
ステップ８４では、先読みの予測が失敗した情報を返す。
図１５は、結果通知部３０Ｂにおいて実行される結果通知処理のサブルーチンの内容を示す。
【００５４】
ステップ９１では、最後に実行されたコマンドの実行結果として入出力装置から返された状態値を、ＣＩＢ８０のＤＳＦに格納する。
ステップ９２では、ＣＯＢ７０に設定されたコマンドのうち、先読み予測が失敗したコマンド及び予測が失敗したことにより未処理のコマンドの数をＣＩＢ８０のＲＰＣに格納する。
【００５５】
ステップ９３では、ＣＩＢ８０をＣＣＷ読み出し部２０に送信する。
かかる本装置のＣＣＷ先読み処理によれば、次のような作用及び効果がある。
即ち、本装置のＣＣＷ先読み処理におけるフロントエンド部として機能するＣＣＷ読み出し部２０（装置識別部２０Ａ，結果予測部２０Ｂ及び結果学習部２０Ｃを含む）において、コマンドの先読みを行うときに、結果予測表４０が参照される。そして、コマンドの実行結果の状態値のうち、予測決定点数が最も大きい状態値である予測値に基づいて、入出力装置から返される状態値が予測される。さらに、その予測に基づいてコマンドの先読みが行われる。また、その一方で、ＣＣＷプログラムの先読み処理機構のバックエンド部として機能するＣＣＷ実行部３０（結果比較部３０Ａ及び結果通知部３０Ｂを含む）において、先読みされたコマンドが実行され、実際に入出力装置から返された状態値がＣＣＷ読み出し部２０に対しフィードバックされる。そして、ＣＣＷ読み出し部２０では、予測値と実際に入出力装置から返された状態値が一致しないときに、予測が失敗したものとして、結果予測表４０の予測決定点数が更新される。さらに、結果予測表４０において、受信した状態値に対応する予測決定点数のほうが予測値に設定された状態値に対応する予測決定点数よりも大きいときは、予測値を受信した状態値で更新される。
【００５６】
このように、結果予測表４０では、実際に実行結果として入出力装置から返された状態値の内容が反映され、学習される。このため、コマンドの先読みにおいて、実際に実行結果として入出力装置から受信される確率の高い状態値を予測することが可能となり、予測の精度が向上する。そして、先読みしたコマンドと実際の入出力装置の状態値により次に実行すべきコマンドとの間の不整合を回避することができ、先読み可能なコマンドの数が増加する。その結果、ＣＣＷ読み出し部２０及びＣＣＷ実行部３０の間の通信量を削減することができ、入出力装置制御を効率化することができる。
【００５７】
また、ＣＣＷ読み込み部２０の処理において、最後にフェッチしたコマンドのアドレスと、その直前にフェッチしたコマンドのアドレスと、が同一か否かを判定し、両者が同一であれば、直前にフェッチしたコマンドまでを先読み対象としている。これにより、例えば、ブランチ命令である「ＴＩＣ」が存在し、その「ＴＩＣ」が実行させるコマンドがその直前にフェッチしたコマンドである場合に、先読みによる無限ループを回避することができる。
【００５８】
さらに、結果予測表４０では、制御対象となる入出力装置ごとに、成功数及び失敗数を含んでいる。そして、ＣＣＷ読み出し部２０では、制御対象の入出力装置において、この成功数が失敗数以上であるときにのみ、先読みを行うようにしている。また、ＣＣＷ読み出し部２０では、先読みされたコマンドの処理が全て終了したときには、成功数をインクリメントする一方、先読みが失敗したときには、失敗数をインクリメントする。こうすることで、コマンドの実行結果の状態値の予測が困難であって先読みに適さない入出力装置の場合には、先読みを行わずに制御をすることが可能である。
【００５９】
さらに、結果予測表４０では、制御対象となる入出力装置ごとに、有効最大数を含んでいる。そして、ＣＣＷ読み出し部２０では、先読みするコマンドの数が有効最大数を超えない範囲内で先読みを行うようにしている。こうすることで、先読みしたコマンドがＣＯＢ７０で確保可能なデータ領域を超えることによるエラーの発生を回避することができる。
【００６０】
なお、本装置では、結果予測表４０が予測値を含んで構成されているが、予測決定点数を含んでいれば、予測値は含まなくてもよい。この場合には、ＣＣＷ読み出し部２０においてコマンドの実行結果の状態値を予測するときに、結果予測表４０に設定された状態値の中から予測決定点数が最も大きい状態値を特定し、その状態値を予測値とすればよい。
【００６１】
次に、かかる本装置のＣＣＷ先読み処理について、先読み予測が成功する場合と失敗する場合とに分け、夫々具体例を示して説明する。
本具体例においては、成功する場合及び失敗する場合ともに、次のことを前提とする。
【００６２】
「接続装置：磁気ディスクＺ
処理対象のＣＣＷプログラム：07-1F-23-31-TIC-06-1E-1E」
なお、上記ＣＣＷプログラムのコマンドの処理内容は、以下の通りである。
【００６３】
07（シーク）：読み書きヘッドを所定の位置に移動する。
1F（セットファイナルマスク）：読み書きヘッドを指定シリンダに移動する。
23（セットセクタ）：読み書きヘッドを指定セクタに移動する。
【００６４】
31（サーチＩＤ）：読み書きヘッドから現位置のカウント領域と指定値とを比較する。その比較結果により状態値が変化する(一致：4C、不一致：0C)。
06（リードデータ部）：読み書きヘッドからデータ領域を読み込む。
【００６５】
1E（リードカウント、キー、データ部）：読み書きヘッドからカウント、キー、データ領域を読み込む。
TIC：任意の１語にブランチさせる命令である。
【００６６】
［Ａ．先読み予測が成功する場合］
この場合では、結果予測表４０のうち磁気ディスクＺに対応する表が、図１６に示す状態となっている。そして、図１７は、先読み予測が成功する場合における処理シーケンスを示す。
【００６７】
まず、ＣＣＷ読み出し部２０では、結果予測表４０のうち、磁気ディスクＺに対応した表に設定された各コマンドの予測値に基づいて、コマンドを先読みする。その結果、コマンドは「07-1F-23-31-06-1E-1E」と先読みされてＣＯＢ７０に設定される。また、ＣＯＢ７０の入出力装置名に「磁気ディスクＺ」が、ＰＦＣに「６」が夫々設定される。
【００６８】
（１）  ＣＣＷ読み取り部２０は、ＣＯＢ７０をＣＣＷ実行部３０に送信する。
（２）−１  ＣＯＢ７０を受信したＣＣＷ実行部３０は、ＣＯＢ７０に設定された先頭のコマンド［07］を実行する。
【００６９】
（２）−２  磁気ディスクＺは、コマンド［07］の実行による制御に応じて読み書きヘッドを移動させ、状態値（0C）を返す。
（３）−１  ＣＣＷ実行部３０は、状態値（0C）と結果予測表４０における予測値（0C）が一致するため、ＣＯＢ７０に設定された次のコマンド［1F］を実行する。
【００７０】
（３）−２  磁気ディスクＺは、コマンド［1F］の実行による制御に応じて読み書きヘッドを指定シリンダに移動させ、状態値（0C）を返す。
（４）−１  ＣＣＷ実行部３０は、状態値（0C）と結果予測表４０における予測値（0C）が一致するため、ＣＯＢ７０に設定された次のコマンド［23］を実行する。
【００７１】
（４）−２  磁気ディスクＺは、コマンド［23］の実行による制御に応じて読み書きヘッドを指定セクタ領域に移動させ、状態値（0C）を返す。
（５）−１  ＣＣＷ実行部３０は、状態値（0C）と結果予測表４０における予測値（0C）が一致するため、ＣＯＢ７０に設定された次のコマンド［31］を実行する。
【００７２】
（５）−２  磁気ディスクＺは、コマンド［31］の実行による制御に応じて、指定した値と読み書きヘッドからセクタのカウント領域の値を取得して両者が一致していることを確認し、状態値（4C）を返す。
【００７３】
（６）−１  ＣＣＷ実行部３０は、状態値（4C）と結果予測表４０における予測値（4C）が一致するため、ＣＯＢ７０に設定された次のコマンド［06］を実行する。
（６）−２  磁気ディスクＺは、コマンド［06］の実行による制御に応じて、読み書きヘッドから指定セクタのデータ領域を読み出し、状態値（0C）を返す。
【００７４】
（７）−１  ＣＣＷ実行部３０は、状態値（0C）と結果予測表４０における予測値（0C）が一致するため、ＣＯＢ７０に設定された次のコマンド［1E］を実行する。
（７）−２  磁気ディスクＺは、コマンド［1E］の実行による制御に応じて、読み書きヘッドから次のセクタのカウント、キー、データ領域を読み出し、状態値（0C）を返す。
【００７５】
（８）−１  ＣＣＷ実行部３０は、状態値（0C）と結果予測表４０における予測値（0C）が一致するため、ＣＯＢ７０に設定された次のコマンド［1E］を実行する。
（８）−２  磁気ディスクＺは、コマンド［1E］の実行による制御に応じて、読み書きヘッドから次のセクタのカウント、キー、データ領域を読み出し、状態値（0C）を返す。
【００７６】
（９）  ＣＣＷ実行部３０は、ＣＩＢ８０のＤＳＦに、最後に実行したコマンド［1E］の実行結果としての状態値（0C）を、ＲＰＣに先読みが成功したことを示す「０」を設定し、ＣＣＷ読み出し部２０に対して送信する。一方、ＣＣＷ読み出し部２０は、ＣＩＢ８０のＲＰＣの値「０」に基づいて、結果予測表４０の成功数をインクリメントする。
【００７７】
そして、かかる処理が実行されることにより、磁気ディスクＺに対応する結果予測表は、図１８に示すように更新される。即ち、コマンド表のほうは特に更新されず、成功数のみがインクリメントされた結果となる。
【００７８】
［Ｂ．先読み予測が失敗する場合］
この場合では、結果予測表４０のうち磁気ディスクＺに対応する表が、図１９に示す状態となっている。そして、図２０は、先読み予測が失敗する場合における処理シーケンスを示す。
【００７９】
まず、ＣＣＷ読み出し部２０では、結果予測表４０のうち、磁気ディスクＺに対応した表に設定された各コマンドの予測値に基づいた順番でコマンドをフェッチする。ここで、結果予測表４０において、コマンド［31］の予測値が（0C）であり、次の［TIC］が１つ前のアドレスのコマンドを指定するものであるため、最後にフェッチしたコマンドのアドレスとその直前にフェッチしたコマンドのアドレスが同一となる（ステップ１２参照）。このため、コマンドのうち「07-1F-23-31」までが先読みされてＣＯＢ７０に設定される。また、ＣＯＢ７０の入出力装置名に「磁気ディスクＺ」が、ＰＦＣに「３」が夫々設定される。
【００８０】
（１）〜（４）では、上記Ａの先読みが成功した場合における（１）〜（４）と夫々同様に処理がなされるため、説明を省略する。
（５）−１  ＣＣＷ実行部３０は、（４）におけるコマンド［23］の実行結果の状態値（0C）と結果予測表４０における予測値（0C）が一致するため、ＣＯＢ７０に設定された次のコマンド［31］を実行する。
【００８１】
（５）−２  磁気ディスクＺは、コマンド［31］の実行による制御に応じて、指定した値と読み書きヘッドからセクタのカウント領域の値を取得して両者が一致していることを確認し、状態値（4C）を返す。
【００８２】
（６）  ＣＣＷ実行部３０は、状態値（4C）と結果予測表４０における予測値（0C）が一致しないため、ＣＩＢ８０のＤＳＦに、最後に実行したコマンド［31］の実行結果としての状態値（4C）を、ＲＰＣに「１」を設定し、ＣＣＷ読み出し部２０に対して送信する。
【００８３】
（７）  ＣＣＷ読み出し部２０では、次の処理を行う。即ち、結果学習部２０Ｃにおいて、ＲＰＣの値「１」に基づいて、予測が失敗したと判定し、結果予測表４０のうち、磁気ディスクＺに対応する表における、コマンド［31］の予測決定点数における状態値（0C）の点数をデクリメントする一方、状態値（4C）の点数をインクリメントする。また、コマンド［31］における予測決定点数が最大の状態値が（0C）から（4C）に変化するため、予測値を（4C）に更新する。さらに、結果予測表４０の失敗数をインクリメントする。その結果、磁気ディスクＺに対応する結果予測表は、図２１に示すように更新される。
【００８４】
そして、ＣＣＷ読み出し部２０では、次のコマンド［06］から再度フェッチを開始し、磁気ディスクＺに対応した表に設定された各コマンドの予測値に基づいた順番でコマンドをフェッチする。その結果、コマンドのうち「06-1E-1E」が先読みされてＣＯＢ７０に設定される。さらに、ＣＯＢ７０の入出力装置名に「磁気ディスクＺ」が、ＰＦＣに「２」が夫々設定され、ＣＣＷ実行部３０に送信される。
【００８５】
（８）−１  ＣＯＢ７０を受信したＣＣＷ実行部３０は、ＣＯＢ７０に設定された先頭のコマンド［06］を実行する。
（８）−１  磁気ディスクＺは、コマンド［06］の実行による制御に応じて、読み書きヘッドから指定セクタのデータ領域を読み出し、状態値（0C）を返す。
【００８６】
（９）及び（１０）では、上記Ａの先読みが成功した場合における（７）及び（８）と夫々同様に処理がなされるため、説明を省略する。
（１１）  ＣＣＷ実行部３０は、ＣＩＢ８０のＤＳＦに、最後に実行したコマンド［1E］の実行結果としての状態値（0C）を、ＲＰＣに先読みが成功したことを示す「０」を設定し、ＣＣＷ読み出し部２０に対して送信する。一方、ＣＣＷ読み出し部２０は、ＣＩＢ８０のＲＰＣの値「０」に基づいて、結果予測表４０の成功数をインクリメントする。
【００８７】
なお、本具体例において、ＣＣＷプログラムの途中に［TIC］が存在するために全く先読みを行わなかった場合、その処理シーケンスは、図２２のようになる。この場合、ＣＣＷプログラムを構成するコマンドごとに、次の手順を繰り返す。即ち、ＣＣＷ読み取り部２０においてＣＣＷプログラムのコマンドを１つフェッチしてＣＯＢ７０に設定し、ＣＣＷ実行部３０に送信する。そして、ＣＣＷ実行部３０においてそのコマンドを実行し、実行結果として入出力装置から返された状態値をＣＩＢ８０に設定してＣＣＷ読み取り部２０に送信する。さらに、ＣＣＷ読み取り部２０では、その状態値に基づいて、さらに次のコマンドを１つフェッチする。
【００８８】
そして、このように先読みを行わずに１つずつフェッチ及び実行を繰り返した場合における図２２の処理シーケンスと、上述の図１７及び図２０の処理シーケンスとを比較する。すると、図１７及び図２０の処理シーケンスのほうが、ＣＣＷ読み出し部２０及びＣＣＷ実行部３０間における通信量が大幅に少ないことがわかる。このように、先読みの精度を向上させて先読みを行い、先読み予測と実際の状態値とが一致しないときにのみコマンドの再読み込みを行うことで、入出力装置１００の制御におけるデータの受け渡しを大幅に削減することができ、効率的に入出力装置１００の制御を行うことができる。
以上の実施形態に関し、更に以下の付記を開示する。
【００８９】
（付記１）  ＣＣＷプログラムの制御対象となる入出力装置ごとに、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値について、入出力装置から返される確率の高さを示すパラメータが設定されたテーブルを参照し、そのパラメータに基づいて各コマンドの実行結果の状態値を予測する予測ステップと、前記予測ステップにより予測された各コマンドの実行結果の状態値に基づいて先読み対象のコマンドを決定し、メモリに格納されたＣＣＷプログラムから、全ての先読み対象のコマンドを先読みする先読みステップと、前記先読みステップにより全ての先読み対象のコマンドの先読みが完了したときに、先読みされたコマンドを順次実行する実行ステップと、前記実行ステップによりコマンドが実行されるごとに、コマンドの実行結果としての状態値を制御対象の入出力装置から受信する受信ステップと、前記受信ステップにより状態値が受信されたときに、その受信された状態値と前記予測ステップにより予測された状態値とが同一か否かを判定する判定ステップと、前記判定ステップにより、前記受信された状態値と前記予測された状態値とが異なると判定されたときに、前記テーブルに設定された、前記受信された状態値に対応するパラメータの値を、前記予測された状態値に対応するパラメータの値に対して相対的に増加させるように更新する第１の更新ステップと、をコンピュータに実現させることを特徴とするＣＣＷ先読み処理プログラム。
【００９０】
（付記２）  前記テーブルには、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値のうちパラメータの値が最も大きい状態値が、入出力装置から返される確率の最も高い予測値としてコマンドごとにさらに設定されており、前記予測ステップは、各コマンドの前記予測値を参照し、その予測値を各コマンドの実行結果の状態値として予測することを特徴とする付記１記載のＣＣＷ先読み処理プログラム。
【００９１】
（付記３）  前記予測値として設定された状態値のパラメータの値よりも、前記受信された状態値のパラメータの値のほうが大きいときに、前記予測値を前記受信された状態値で更新する第２の更新ステップをさらに含むことを特徴とする付記２記載のＣＣＷ先読み処理プログラム。
【００９２】
（付記４）  前記先読みステップは、先読み対象のコマンドを決定するときに、ＣＣＷプログラムのコマンドの中に、他のコマンドにブランチさせるブランチ命令が含まれており、かつ、そのブランチ命令により実行されるコマンドとそのブランチ命令の直前に読み込まれるコマンドとが一致している場合には、そのブランチ命令の直前に読み込まれるコマンドまでを先読み対象のコマンドとして決定し、先読みを行うことを特徴とする付記１〜付記３のいずれか１つに記載のＣＣＷ先読み処理プログラム。
【００９３】
（付記５）  前記テーブルには、前記制御対象の入出力装置ごとに、先読みにおける予測が成功した回数を示す成功数及び先読みにおける予測が失敗した回数を示す失敗数がさらに設定されており、前記先読みステップは、成功数が失敗数以上であるときにのみ、先読みをすることを特徴とする付記１〜付記４のいずれか１つに記載のＣＣＷ先読み処理プログラム。
【００９４】
（付記６）  前記先読みステップにより先読みされたコマンドが前記実行ステップにより全て実行されたときに、成功数を加算する一方、前記判定ステップにより、受信された状態値と前記予測ステップにより予測された状態値とが異なると判定されたときに、失敗数を加算するように、成功数又は失敗数を更新する第３の更新ステップをさらに含むことを特徴とする付記５記載のＣＣＷ先読み処理プログラム。
【００９５】
（付記７）  前記テーブルには、前記制御対象の入出力装置ごとに、先読みをするコマンド数の上限としての有効最大数がさらに設定されており、前記先読みステップは、先読みするコマンド数が有効最大数を超えない範囲内で先読みをすることを特徴とする付記１〜付記６のいずれか１つに記載のＣＣＷ先読み処理プログラム。
【００９６】
（付記８）  ＣＣＷプログラムの制御対象となる入出力装置ごとに、ＣＣＷプログラムに含まれる各コマンドの実行結果として制御対象の入出力装置から返される各状態値について、入出力装置から返される確率の高さを示すパラメータが設定されたテーブルを参照し、そのパラメータに基づいて各コマンドの実行結果の状態値を予測する予測手段と、前記予測手段により予測された各コマンドの実行結果の状態値に基づいて先読み対象のコマンドを決定し、メモリに格納されたＣＣＷプログラムから、全ての先読み対象のコマンドを先読みする先読み手段と、前記先読み手段により全ての先読み対象のコマンドの先読みが完了したときに、先読みされたコマンドを順次実行する実行手段と、前記実行手段によりコマンドが実行されるごとに、コマンドの実行結果としての状態値を制御対象の入出力装置から受信する受信手段と、前記受信手段により状態値が受信されたときに、その受信された状態値と前記予測手段により予測された状態値とが同一か否かを判定する判定手段と、前記判定手段により、前記受信された状態値と前記予測された状態値とが異なると判定されたときに、前記テーブルに設定された、前記受信された状態値に対応するパラメータの値を、前記予測された状態値に対応するパラメータの値に対して相対的に増加させるように更新する第１の更新手段と、を含んで構成されたことを特徴とするＣＣＷ先読み処理装置。
【図面の簡単な説明】
【００９７】
【図１】ＣＣＷ先読み機構を具現化した装置の一例の全体構成図
【図２】結果予測表の説明図
【図３】ＣＰＡリストの説明図
【図４】入出力装置表の説明図
【図５】ＣＯＢの説明図
【図６】ＣＩＢの説明図
【図７】ＣＣＷ読み出し部による処理のフローチャート（１）
【図８】ＣＣＷ読み出し部による処理のフローチャート（２）
【図９】先読み判定処理のフローチャート
【図１０】装置識別処理のフローチャート
【図１１】結果予測処理のフローチャート
【図１２】結果学習処理のフローチャート
【図１３】ＣＣＷ実行部による処理のフローチャート
【図１４】結果比較処理のフローチャート
【図１５】結果通知処理のフローチャート
【図１６】先読み予測が成功する場合の具体例における処理前の結果予測表の説明図
【図１７】先読み予測が成功する場合の具体例における処理シーケンスの説明図
【図１８】先読み予測が成功する場合の具体例における処理後の結果予測表の説明図
【図１９】先読み予測が失敗する場合の具体例における処理前の結果予測表の説明図
【図２０】先読み予測が失敗する場合の具体例における処理シーケンスの説明図
【図２１】先読み予測が失敗する場合の具体例における処理後の結果予測表の説明図
【図２２】先読みを行わない場合における処理シーケンスの説明図
【符号の説明】
【００９８】
１０    メモリ
２０    ＣＣＷ読み込み部
２０Ａ  装置識別部
２０Ｂ  結果予測部
２０Ｃ  結果学習部
３０    ＣＣＷ実行部
３０Ａ  結果比較部
３０Ｂ  結果通知部
４０    結果予測表
５０    ＣＰＡリスト
６０    入出力装置表
７０    ＣＯＢ
８０    ＣＩＢ
１００    入出力装置
【図１】
2010079612.tif 000003
【図２】
2010079612.tif 000004
【図３】
2010079612.tif 000005
【図４】
2010079612.tif 000006
【図５】
2010079612.tif 000007
【図６】
2010079612.tif 000008
【図７】
2010079612.tif 000009
【図８】
2010079612.tif 000010
【図９】
2010079612.tif 000011
【図１０】
2010079612.tif 000012
【図１１】
2010079612.tif 000013
【図１２】
2010079612.tif 000014
【図１３】
2010079612.tif 000015
【図１４】
2010079612.tif 000016
【図１５】
2010079612.tif 000017
【図１６】
2010079612.tif 000018
【図１７】
2010079612.tif 000019
【図１８】
2010079612.tif 000020
【図１９】
2010079612.tif 000021
【図２０】
2010079612.tif 000022
【図２１】
2010079612.tif 000023
【図２２】
2010079612.tif 000024