(57)【要約】【課題】  ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御を高速化し、かつハードウェア量を削減することを目的とする。【解決手段】  本発明のバウンダリ実行制御システムは、キャッシュと、キャッシュに対してスヌープ処理を行うスヌープ処理回路と、バウンダリチェック回路とを備える。バウンダリチェック回路は、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成し、キャッシュに対するスカラロード命令の発行要求時に、バウンダリとマスクとに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定する。【選択図】      図１
2010140306.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュと、
前記キャッシュに対してスヌープ処理を行うスヌープ処理回路と、
複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、前記最小値と前記最大値との排他的論理和演算の結果からマスクを生成し、前記キャッシュに対するスカラロード命令の発行要求時に、前記バウンダリと前記マスクとに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路と、
を備えたことを特徴とするバウンダリ実行制御システム。
【請求項２】
前記バウンダリチェック回路は、
前記バウンダリおよび前記マスクを生成するバウンダリ生成部と、
前記バウンダリの最小値または最大値と前記マスクとが格納されたアドレス記憶部と、
前記キャッシュに対するスカラロード命令の発行要求時に、前記バウンダリと前記マスクとの比較を行い、前記比較結果に基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するスカラロード命令発行制御部と、
を備えることを特徴とする請求項１記載のバウンダリ実行制御システム。
【請求項３】
前記スカラロード命令発行制御部は、前記排他的論理和演算結果で最上位ビットから連続で０となっているビット部分を全て１とし、それ以外のビット部分を０とした前記マスクを生成し、
前記スカラロード命令発行制御部は、前記マスクで１となっているビット部分に対応する、前記バウンダリの最小値または最大値のビット部分と前記スカラロード命令の指定するアドレスのビット部分とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項２記載のバウンダリ実行制御システム。
【請求項４】
前記バウンダリ生成部は、ベクトルを構成するベースアドレスと距離とベクトル長とを含む情報に基づいて、前記バウンダリおよび前記マスクを生成することを特徴とする請求項３記載のバウンダリ実行制御システム。
【請求項５】
前記バウンダリ生成部は、前記ベースアドレスおよび前記距離を含む情報に基づいて前記マスクの候補を複数生成し、前記ベクトル長を示す情報が判明すると、前記ベースアドレスと前記距離と前記ベクトル長とを含む情報に基づいて前記候補の中からマスク選択を行うことを特徴とする請求項４に記載のバウンダリ実行制御システム。
【請求項６】
前記バウンダリ生成部は、前記生成されたマスクを圧縮して前記アドレス記憶部に格納し、
前記スカラロード命令発行制御部は前記圧縮されたマスクを解凍して前記判定を行うことを特徴とする請求項２ないし５のいずれかに記載のバウンダリ実行制御システム。
【請求項７】
前記バウンダリ生成部は、前記生成されたマスクのうち所定の上位ビットのみ圧縮率を下げることを特徴とする請求項６記載のバウンダリ実行制御システム。
【請求項８】
前記バウンダリ生成部は、ベクトルを構成するベースアドレスと距離とベクトル長とのうち前記距離を示す情報が２のべき乗であるときに、前記距離を示す情報に基づいて他のマスクを生成し、
前記スカラーロード命令発行制御部は、前記バウンダリと前記マスクと前記他のマスクとに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項４ないし７のいずれかに記載のバウンダリ実行制御システム。
【請求項９】
前記バウンダリ生成部は、前記距離を示す情報において最下位から連続して０となっているビット部分を１とし、それ以外のビット部分を０とした前記他のマスクを生成し、前記他のマスクと前記マスクとの排他的論理和をとり、
前記スカラーロード命令制御部は、前記排他的論理和演算結果において１となっているビット部分に対してのみ、前記バウンダリの最小値または最大値と前記スカラロード命令のアドレスとを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項８記載のバウンダリ実行制御システム。
【請求項１０】
前記バウンダリ生成部は、前記生成された他のマスクを圧縮して前記アドレス記憶部に格納し、
前記スカラロード命令発行制御部は前記圧縮された他のマスクを解凍して前記判定を行うことを特徴とする請求項８または９記載のバウンダリ実行制御システム。
【請求項１１】
前記バウンダリ生成部は、前記生成された他のマスクのうち所定の下位ビットのみ圧縮率を下げることを特徴とする請求項１０記載のバウンダリ実行制御システム。
【請求項１２】
キャッシュとバウンダリチェック回路とスヌープ処理回路とを備えたバウンダリ実行制御システムにおけるバウンダリ実行制御方法において、
前記バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとしてアドレス記憶部に記憶するとともに、前記最小値と前記最大値との排他的論理和演算の結果からマスクを生成するバウンダリ生成ステップと、
前記スヌープ処理回路が、前記キャッシュに対してスヌープ処理を行うスヌープ処理ステップと、
前記バウンダリチェック回路が、前記キャッシュに対するスカラロード命令の発行要求時に、前記アドレス記憶部の前記バウンダリおよび前記マスクに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するバウンダリチェックステップと、
を備えることを特徴とするバウンダリ実行制御方法。
【請求項１３】
前記バウンダリ生成ステップにおいて、前記排他的論理和演算結果で最上位ビットから連続で０となっているビット部分を１とし、それ以外のビット部分を０とした前記マスクを生成し、
前記バウンダリチェックステップにおいて、前記マスクで０となっているビット部分に対してのみ、前記バウンダリの最小値あるいは最大値と前記スカラロード命令の指定するアドレスのビット部分とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項１２記載のバウンダリ実行制御方法。
【請求項１４】
前記バウンダリ生成ステップにおいて、ベクトルを構成するベースアドレスと距離とベクトル長とを含む情報に基づいて、前記バウンダリおよび前記マスクを生成することを特徴とする請求項１３記載のバウンダリ実行制御方法。
【請求項１５】
前記バウンダリ生成ステップにおいて、前記ベースアドレスと前記距離とを含む情報に基づいて前記マスクの候補を複数生成し、前記ベクトル長を含む情報が判明すると、前記ベースアドレスと前記距離と前記ベクトル長とを含む情報に基づいて前記候補の中からマスク選択を行うことを特徴とする請求項１４に記載のバウンダリ実行制御方法。
【請求項１６】
前記バウンダリ生成ステップにおいて、
前記生成されたマスクを圧縮して記憶し、前記判定時には前記圧縮されたマスクを解凍することを特徴とする請求項１２ないし１５のいずれかに記載のバウンダリ実行制御方法。
【請求項１７】
前記バウンダリ生成ステップにおいて、
前記生成されたマスクのうち所定の上位ビットのみ圧縮率を下げることを特徴とする請求項１６記載のバウンダリ実行制御方法。
【請求項１８】
前記バウンダリ生成ステップにおいて、
ベクトルを構成するベースアドレスと距離とベクトル長とのうち前記距離を示す情報が２のべき乗であるときに、前記距離を示す情報に基づいて他のマスクを生成し、
前記バウンダリチェックステップは、前記バウンダリと前記マスクと前記他のマスクとに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項１４ないし１７のいずれかに記載のバウンダリ実行制御方法。
【請求項１９】
前記バウンダリ生成ステップにおいて、
前記距離を示す情報において最下位から連続して０となっているビット部分を１とし、それ以外のビット部分を０として前記他のマスクを生成した後、前記他のマスクと前記マスクとの排他的論理和を生成し、
前記バウンダリチェックステップにおいて、
前記排他的論理和演算結果において１となっているビット部分に対してのみ、前記バウンダリの最小値あるいは最大値と前記スカラロード命令の指定するアドレスのビット部分とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項１８記載のバウンダリ実行制御方法。
【請求項２０】
前記バウンダリ生成ステップにおいて、
前記生成された他のマスクを圧縮して前記アドレス記憶部に格納し、前記判定時には前記圧縮された他のマスクを解凍することを特徴とする請求項１８または１９記載のバウンダリ実行制御方法。
【請求項２１】
前記バウンダリ生成ステップにおいて、前記生成された他のマスクのうち所定の下位ビットのみ圧縮率を下げることを特徴とする請求項２０記載のバウンダリ実行制御方法。
【請求項２２】
コンピュータに、
バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとしてアドレス記憶部に記憶するとともに、前記最小値と前記最大値との排他的論理和演算の結果からマスクを生成するバウンダリ生成ステップと、
スヌープ処理回路が、キャッシュに対してスヌープ処理を行うスヌープ処理ステップと、
前記バウンダリチェック回路が、前記キャッシュに対するスカラロード命令の発行要求時に、前記アドレス記憶部の前記バウンダリおよび前記マスクに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するバウンダリチェックステップと、
を実行させることを特徴とするバウンダリ実行制御プログラム。
【請求項２３】
前記バウンダリ生成ステップにおいて、前記排他的論理和演算結果で最上位ビットから連続で０となっているビット部分を全て１とし、それ以外のビット部分を０とした前記マスクを生成し、
前記バウンダリチェックステップにおいて、前記マスクで０となっているビット部分に対応する、前記バウンダリの最小値または最大値のビット部分と前記スカラロード命令の指定するアドレスのビット部分とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項２２記載のバウンダリ実行制御プログラム。
【請求項２４】
前記バウンダリ生成ステップにおいて、ベクトルを構成するベースアドレスと距離とベクトル長とを含む情報に基づいて、前記バウンダリおよび前記マスクを生成することを特徴とする請求項２３記載のバウンダリ実行制御プログラム。
【請求項２５】
前記バウンダリ生成ステップにおいて、前記ベースアドレスと前記距離とを含む情報に基づいて前記マスクの候補を複数生成し、前記ベクトル長を含む情報が判明すると、前記ベースアドレスと前記距離と前記ベクトル長とを含む情報に基づいて前記候補の中からマスク選択を行うことを特徴とする請求項２４に記載のバウンダリ実行制御プログラム。
【請求項２６】
前記バウンダリ生成ステップにおいて、
前記生成されたマスクを圧縮して記憶し、前記判定時には前記圧縮されたマスクを解凍することを特徴とする請求項２２ないし２５のいずれかに記載のバウンダリ実行制御プログラム。
【請求項２７】
前記バウンダリ生成ステップにおいて、
前記生成されたマスクのうち所定の上位ビットのみ圧縮率を下げることを特徴とする請求項２６記載のバウンダリ実行制御プログラム。
【請求項２８】
前記バウンダリ生成ステップにおいて、
ベクトルを構成するベースアドレスと距離とベクトル長とのうち前記距離を示す情報が２のべき乗であるときに、前記距離を示す情報に基づいて他のマスクを生成し、
前記バウンダリチェックステップにおいて、
前記バウンダリと前記マスクと前記他のマスクとに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項２４ないし２７のいずれかに記載のバウンダリ実行制御プログラム。
【請求項２９】
前記バウンダリ生成ステップにおいて、
前記距離を示す情報において最下位から連続して０となっているビット部分を１とし、それ以外のビット部分を０として前記他のマスクを生成した後、前記他のマスクおよび前記マスクの排他的論理和を生成し、
前記バウンダリチェックステップにおいて、
前記排他的論理和演算結果において１となっているビット部分に対してのみ、前記バウンダリの最小値あるいは最大値と前記スカラロード命令の指定するアドレスのビット部分とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項２８記載のバウンダリ実行制御プログラム。
【請求項３０】
前記バウンダリ生成ステップにおいて、
前記生成された他のマスクを圧縮して前記アドレス記憶部に格納し、前記判定時には前記圧縮された他のマスクを解凍することを特徴とする請求項２８または２９記載のバウンダリ実行制御プログラム。
【請求項３１】
前記バウンダリ生成ステップにおいて、前記生成された他のマスクのうち所定の下位ビットのみ圧縮率を下げることを特徴とする請求項３０記載のバウンダリ実行制御プログラム。
【請求項３２】
キャッシュと、
前記キャッシュに対してスヌープ処理を行うスヌープ処理回路と、
複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、前記最小値および前記最大値がこれらの値の最上位ビットから何ビット目まで一致するかの検出を行い、該検出の結果と前記バウンダリとに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路と、
を備えたことを特徴とするバウンダリ実行制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラムにおいて、ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御を高速化し、かつハードウェア量を削減するバウンダリ実行制御システム、バウンダリ実行制御方法、およびバウンダリ実行制御プログラムに関する。
【背景技術】
【０００２】
ベクトル処理に関連する技術として、スカラプロセッサとベクトルプロセッサとＬ２キャッシュとメモリとから構成されるバウンダリ実行制御システムが知られている。
【０００３】
このシステムにおいて、スカラプロセッサは、スヌープ処理回路とＬ１キャッシュとを備えており、スカラプロセッサが、ベクトルストア命令（以下、ＶＳＴと呼ぶ）の実行後、L１キャッシュに対する後続のスカラロード命令（以下、ＬＤＳと呼ぶ）を実行する場合には、ロードするデータが最新のものであることを保証してから発行する必要がある。
【０００４】
そのために、スカラプロセッサは、スヌープ処理回路によるキャッシュのスヌープ完了を待ち、ロードするデータがＶＳＴによって更新されていないことを確認している。  その結果、ベクトル計算機を含めＳＩＭＤ計算機（Single Instruction/Multiple Data計算機）では、１度に多くのデータをストアするため、スヌープの完了には時間がかかり、後続のＬＤＳの発行は遅れてしまう。
【０００５】
図１１に、スヌープ処理回路の例を示す。スヌープ処理回路は、アドレス演算器８１、スヌープアドレスレジスタ８２、Ｌ１キャッシュのタグのコピーを格納するタグコピー格納器８３および比較器８４を備える。アドレス演算器８１によって生成されたスヌープアドレスはレジスタ８２に格納され、その下位ビットにより指定される格納器８３内のタグのコピーが読み出され、読み出されたタグとスヌープアドレスの上位ビットとが比較器８４で比較される。比較の結果、両者が一致する場合には、Ｌ１キャッシュの当該エントリはＶＳＴによって更新されるものとして、そのエントリが無効化（フラッシュ）される。図１１に示した例では、それぞれ独立して同時に動作可能なコピー格納器８３が複数個設けられているので、このスヌープ処理を同時に複数のアドレスについて行うことができる。
【０００６】
しかし、これでも、前述したように、ＶＳＴは１度に多くのデータをストアするため、スヌープの完了には時間がかかり、後続のLDSの発行は遅れてしまう。
【０００７】
そこで、ロードするデータがＶＳＴによって更新されていないことをハードウェアが保証し、スヌープの完了を待たずに後続のＬＤＳを発行する方法としてバウンダリチェック方式が知られている。
【０００８】
図１２に、バウンダリ方式のバウンダリ実行制御システム１２０の一例を示す。バウンダリチェック方式では、スカラプロセッサ１２１が、スヌープ処理回路１２１１およびＬ１キャッシュ１２１３に加え、バウンダリチェック回路１２１２を備える。バウンダリチェック回路１２１２は、バウンダリ生成部１２１６とＬＤＳ発行制御部１２１４とアドレス記憶部１２１５とを備える。ＶＳＴの実行時に、バウンダリ生成部１２１６は更新するアドレスの最小と最大をバウンダリとしてアドレス記憶部１２１５に記憶する。そして、ＬＤＳ発行制御部１２１４はこの記憶されたバウンダリの範囲外に対してアクセスするLDSについてスヌープの完了を待たずに実行可能と判定することができる。
【０００９】
関連技術として、特許文献１には、最小のハードウェア量で複数のベクトルストア命令に対してバウンダリ制御を行う技術が開示されている。
【００１０】
図１５に、特許文献１のバウンダリ実行制御装置１５を示す。
【００１１】
まず、バウンダリ制御部１５６が、実行中のベクトルストアリクエストの終了アドレスを算出する。次に、バウンダリ制御部１５６が、ベクトルストアリクエストのバウンダリ区間の始点及び終点のアドレスを登録するとともに、後続のベクトルストアリクエストの開始アドレスと登録した始点のアドレスとの比較を行う。そして、登録したアドレスの変更を行ったり、後続のスカラーロードリクエストのアドレスと登録したバウンダリ区間の始点及び終点のアドレスとを比較し、メモリリクエスト制御部に対し後続のスカラロードリクエストの出力先を指示することで、スカラロードリクエストをキャッシュメモリ又は主記憶部１５４のいずれかに出力制御し、複数のベクトルストア命令実行中にスカラロード命令を実行可能とするようにする。
【００１２】
さらに、関連技術として、特許文献２には、回路規模が小さくアドレス領域の拡張性があるアドレスデコーダが開示されている。
【００１３】
【特許文献１】特開２００１−１９５３８９
【特許文献２】特開平７−４４４５５
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上述したようなバウンダリチェックでは、バウンダリとLDSのアドレスとの比較を最低２回行う必要があり、遅延時間および回路規模の両面で不利となり、小規模で高速なプロセッサを設計する上で妨げとなる。以下でさらに詳細に説明する。
【００１５】
図１３に、バウンダリチェック回路１２１２の一例を示す。
【００１６】
バウンダリ生成部１２１６は、Ｂ＋（（ＶＬ−１）×Ｄ）を計算するアドレス演算器１３１を備える。バウンダリ生成部１２１６は、アドレスを示すテーブル１３２をアドレス記憶部１２１５に登録する。ＬＤＳ発行制御部１２１４は比較器１３３を備える。この比較結果に基づいてＬＤＳの発行を許可するか否かが判定される。
【００１７】
Ｂはベースアドレスを、Ｄは距離を、ＶＬはベクトル長をそれぞれ表し、、ＶＳＴによって、アドレスＢ、Ｂ＋Ｄ、Ｂ＋２Ｄ、・・・、Ｂ＋（（ＶＬ−１）×Ｄ）のデータが更新されるとする。この場合、更新するアドレスの最小値はＢ（Ｄが負のときはＢ＋（（ＶＬ−１）×Ｄ））、最大値はＢ＋（（ＶＬ−１）×Ｄ）（Ｄが負の時はＢ）となる。バウンダリ生成部１２１６はＢ＋（（ＶＬ−１）×Ｄ）を計算し、その計算結果をＢと共にバウンダリとしてアドレス記憶部１２１５に登録する。このアドレス記憶部１２１５には、スヌーピング途中のＶＳＴが複数ある場合に備えて、複数のバウンダリを記憶するだけのエントリが設けられている。そして、後続のＬＤＳが発行されるときには、ＬＤＳ発行制御部１２１４でＬＤＳの指定するアドレス（以下、Addr_ldsとする）がバウンダリの範囲内にあるかどうかが判定される。ＬＤＳが
Ｂ≦Addr_lds≦Ｂ＋（（ＶＬ−１）×Ｄ）  ・・・  （式１）
を満たせば、アドレスAddr_ldsのデータは先行のＶＳＴによって更新される可能性があるため、スヌープの完了を待つ。逆に、（式１）を満たさなければＶＳＴによってデータが更新されることがなく、スヌープの完了を待たずに、ＬＤＳが発行可能になる。
【００１８】
スカラプロセッサ１２１にバウンダリチェック回路１２１２を設けるために新たに必要となるハードウェアは、主に、バウンダリ生成部１２１６にＢ＋（（ＶＬ−１）×Ｄ）を計算するアドレス演算器１３１、アドレス記憶部１２１５にバウンダリとなるアドレス２個×（アドレス記憶部のエントリ数）の記憶容量、ＬＤＳ発行制御部１２１４にバウンダリとAddr_ldsとを比較する比較器１３３が２×（アドレス記憶部のエントリ数）個である。
【００１９】
図１４に、比較器の構成を示す。Nビット比較器の場合、2logN+2段程度の論理演算が必要となる。32ビットの場合について考えると、比較器では、12段程度の論理演算が必要になり、さらに、ＬＤＳ発行制御部１２１４では、2つの比較器の結果を入力とする論理積回路とアドレス記憶部１２１５のエントリ数分を入力とする論理和回路とが必要となるため、これらを合わせてＬＤＳ発行制御部１２１４は１５段程度の論理演算が必要になる。
【００２０】
このように、高性能で小規模なプロセッサを実現する上で、上述したバウンダリチェック方式では、遅延時間およびハードウェア量の両面で問題がある。
【００２１】
また、特許文献１記載の技術でも、バウンダリとLDSのアドレスとの比較を最低２回行う必要があり、遅延時間および回路規模の両面で問題がある。
【００２２】
本発明の目的は、上述した問題点を解決し、ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御とを高速化し、かつ、ハードウェア量を削減できるバウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明の第１のバウンダリ実行制御システムは、キャッシュと、キャッシュに対してスヌープ処理を行うスヌープ処理回路と、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成し、キャッシュに対するスカラロード命令の発行要求時に、バウンダリとマスクとに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路とを備えることを特徴とする。
【００２４】
本発明の第２のバウンダリ実行制御システムは、キャッシュと、キャッシュに対してスヌープ処理を行うスヌープ処理回路と、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、最小値および最大値がこれらの値の最上位ビットから何ビット目まで一致するかの検出を行い、該検出の結果とバウンダリとに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路とを備えることを特徴とする。
【００２５】
本発明のバウンダリ制御方法は、キャッシュとバウンダリチェック回路とスヌープ処理回路とを備えたバウンダリ実行制御システムにおけるバウンダリ実行制御方法において、バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとしてアドレス記憶部に記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成するバウンダリ生成ステップと、スヌープ処理回路が、キャッシュに対してスヌープ処理を行うスヌープ処理ステップと、バウンダリチェック回路が、キャッシュに対するスカラロード命令の発行要求時に、アドレス記憶部のバウンダリおよびマスクに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェックステップと、を備えることを特徴とする。
【００２６】
本発明のバウンダリ制御プログラムは、コンピュータに、バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとしてアドレス記憶部に記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成するバウンダリ生成ステップと、スヌープ処理回路が、キャッシュに対してスヌープ処理を行うスヌープ処理ステップと、バウンダリチェック回路が、キャッシュに対するスカラロード命令の発行要求時に、アドレス記憶部のバウンダリおよびマスクに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェックステップと、を実行させることを特徴とする。
【発明の効果】
【００２７】
本発明には、ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御とを高速化し、かつ、ハードウェア量を削減することができるという効果がある。
【発明を実施するための最良の形態】
【００２８】
次に、本発明について図面を参照して詳細に説明する。
【００２９】
図１は、本発明のバウンダリ実行制御システムの第１の実施形態を示すブロック図である。
【００３０】
図１を参照すると、本実施形態に係るバウンダリ実行制御システム１は、スカラプロセッサ１１とベクトル（ＳＩＤＭ）プロセッサ１２とＬ２キャッシュ１３とメモリ１４とから構成される。Ｌ１キャッシュ１１３はスカラプロセッサ１１によって使用され、Ｌ２キャッシュ１３はスカラプロセッサ１１およびベクトルプロセッサ１２により使用される。
【００３１】
また、スカラプロセッサ１１はスヌープ処理を行うスヌープ処理回路１１１およびバウンダリチェック回路１１２を備える。バウンダリチェック回路１１２は、バウンダリ生成部１１２１、アドレス記憶部１１２２およびＬＤＳ発行制御部１１２３を備える。バウンダリ生成部１１２１はマスク生成回路１１２４を備える。本実施形態に係るバウンダリ実行制御システム１は、バウンダリ生成部１１２１がマスク生成回路１１２４を備える点が図１２のシステムと異なる。
【００３２】
図２に、本実施形態におけるバウンダリチェック回路１１２の詳細な回路図を示す。
【００３３】
図２において、バウンダリ生成部１１２１は、Ｂ＋（（ＶＬ−１）×Ｄ）を計算するアドレス演算器２１およびマスク生成回路２２を備える。バウンダリ生成部１１２１は、ベースアドレスＢおよびマスク値を含むテーブル２３をアドレス記憶部１１２２に登録する。ＬＤＳ発行制御部１１２３は比較器２４を備える。この比較器２４での比較結果に基づいてＬＤＳの発行を許可するか否かが判定される。
【００３４】
本実施形態では、スカラプロセッサ１１がＶＳＴを発行すると、ベクトルプロセッサ１２がＶＳＴを実行するとともに、スカラプロセッサ１１がバウンダリ生成を行い、ＬＤＳ発行制御を行う。
【００３５】
本実施形態では、スカラプロセッサ１１のＬＤＳ発行制御時にマスクを利用することにより、以下に説明するように、遅延時間とハードウェア量との削減を図ることができる。
【００３６】
まず、マスクの生成方法について説明する。なお、以下の説明でＢ、ＤおよびＶＬはそれぞれベースアドレス、距離およびベクトル長を表す。
【００３７】
バウンダリ生成部１１２１では、演算器２１によりＢ＋（（ＶＬ−１）×Ｄ）の値が計算された後、その計算結果とＢとの排他的論理和がとられ、その結果の値のうち、最上位ビットから連続で0となっている部分を1、それ以外の部分を0としたマスク値が生成される。バウンダリ生成部１１２１は、Ｂおよび生成されたマスク値とを対応付けてをアドレス記憶部１１２２に登録する。
【００３８】
ＬＤＳ発行制御部１１２３は、生成されたマスク値の1となっているビット部分に対応するＢのビット部分とAddr_lds（ＬＤＳの指定するアドレス）のビット部分との比較を行う。一致している場合には、ＬＤＳがロードするアドレスのデータがＶＳＴにより更新されている可能性があるので、スヌープが完了するまでＬＤＳを発行しない。不一致の場合には、ＬＤＳがロードするアドレスのデータがＶＳＴによって更新されている可能性はないためＬＤＳを発行可能とする。
【００３９】
図３(a)に、マスク生成の一例を示す。ここでは、Ｂを「110010010010」とし、Ｂ＋（（ＶＬ−１）×Ｄ）を「110011000100」としている。
【００４０】
まず、これら2つのアドレスの排他的論理和がとられ、その結果の値は「000001010110」となり、その最上位から5ビットの部分の値が連続で0であるので、マスク値は「111110000000」となる。この場合、ＬＤＳ発行制御部１１２３は、Ｂの上位５ビット部分とAddr_ldsの上位５ビット部分との比較を行う。ＬＤＳ発行制御部１１２３は、比較の結果、一致の場合には、スヌープの結果を待ってからＬＤＳを発行し、不一致の場合には、スヌープの結果を待たずにＬＤＳを発行可能と判定する。
【００４１】
以下に、このようなマスク値を用いたＢとAddr_ldsとの一致比較により発行制御することの正当性について述べる。
【００４２】
マスク値を用いて切り捨てられたビット部分を全て「０」とした値をＢＬとし、マスク値を用いて切り捨てられたビット部分を全て「１」とした値をＢＨとする。図３(a)の例では、ＢＬは「110010000000」となり、ＢＨは「110011111111」となる（図３(b)参照）。マスク値の「１」であるビット部分はＢとＢ＋（（ＶＬ−１）×Ｄとの対応するビット部分が一致していることを示しているので、
ＢＬ  ≦  Ｂ、Ｂ＋（（ＶＬ−１）×Ｄ）  ≦  ＢＨ  ・・・  （式２）
が成立し、これはＤが負の場合も変わらない。
【００４３】
また、マスク値で「１」としたビット部分について、ＢとAddr_ldsとが一致する場合には、
ＢＬ  ≦  Addr_lds  ≦  ＢＨ                     ・・・  （式３）
が成立する。（式３）を満たさない場合、つまり、マスク値で「１」としたビット部分についてＢとAddr_ldsとが一致しない場合、（式１）を満たすことはないと言える。
【００４４】
図３(a)および（ｂ）の例では、ＢＬは「110010000000」、ＢＨは「110011111111」であり、例えば、、Addr_ldが「11001xxxxxxx」（Addr_lds0）および「11011xxxxxxx」（Addr_lds1）である場合について考える。今、マスク値の上位５ビットが「１」であるため、ＬＤＳ発行制御部１１２３は、Addr_lds0およびAddr_lds1のそれぞれの上位５ビット部分がＢ「110010010010」の上位５ビット部分と一致するか否かを判定する。Addr_lds0は一致するので、スヌープの完了待ちが必要と判定され、Addr_lds1は一致しないので、ＬＤＳの発行が可能と判定される。
【００４５】
図４に、バウンダリ生成およびＬＤＳ発行制御についてのフローチャートを示す。
【００４６】
スカラプロセッサ１１によりＶＳＴが発行されると（Ｓ４００）、ベクトルプロセッサ１２がＶＳＴを実行することにより、ベクトルレジスタ（図示せず）のデータがＬ２キャッシュ１２へストアされる（Ｓ４０１）。Ｓ４０１と同時に、スカラプロセッサ１１はスヌープ処理を開始し（Ｓ４０２）、バウンダリおよびマスクの生成が行なわれる（Ｓ４０３）。Ｓ４０２のスヌープ処理では、アドレス（Ｂ、Ｂ+Ｄ、Ｂ+２Ｄ、・・・、Ｂ+（ＶＬ-１）*Ｄ））の計算が行われ、計算されたアドレスと同じアドレスがＬ１キャッシュ１１３にあれば、そのエントリが無効化される。
【００４７】
次に、Ｓ４０３においてバウンダリおよびマスクが生成されると、バウンダリ生成部１１２１は、ベースアドレスＢおよびマスク値をアドレス記憶部１１２２に登録する（Ｓ４０４）。
【００４８】
次に、スカラプロセッサ１１がＬＤＳ発行要求を行うと（Ｓ４０５）、スカラプロセッサ１１のＬＤＳ発行制御部１１２３は、ＬＤＳの指定するアドレスとアドレス記憶部１１２２から読み出したベースアドレスＢとマスク値とを用いて、ＬＤＳ発行の可否を判定する（Ｓ４０６、Ｓ４０７）。
【００４９】
判定結果が「発行許可」であれば、ＬＤＳの発行要求に基づいてそのままＬＤＳを発行し（Ｓ４０７、Ｓ４０８）、Ｌ１キャッシュ１１３からロードが開始される（Ｓ４０９）。一方、判定結果が「発行不許可」であれば、先行のＶＳＴによりＬ１キャッシュが無効化されている可能性があるので、スヌープの完了を待ってからＬＤＳを発行する（Ｓ４０７、Ｓ４１０、Ｓ４１１）。その後、Ｌ１キャッシュ１１３からロードが開始される（Ｓ４１２）。
【００５０】
図１２のバウンダリチェック方式では、ＬＤＳ発行制御部に２×（アドレス記憶部のエントリ数）個の比較器を必要とするが、本実施形態に係るバウンダリチェック方式では、ＬＤＳ発行制御部には（アドレス記憶部のエントリ数）個の比較器を必要とするだけであり、その結果、ＬＤＳ発行制御部の構成に必要なハードウェア量を削減することができる。
【００５１】
また、本実施形態におけるＬＤＳ発行制御部１１２３は、約１０段程度の論理演算で構成可能である。
【００５２】
このように、本実施形態では、図１２のバウンダリチェック方式と比べ、遅延時間およびハードウェア量の両方の削減が行える。
【００５３】
なお、アドレス記憶部１１２２は、例えば、Ternary CAM（ＴＣＡＭ）を用いて実現される。ＴＣＡＭは、キーで検索しデータにアクセスする通常のＣＡＭ（連想メモリ）に、マスク値を記憶する領域を付加したものである。ＴＣＡＭを読み出す時には、キーにマスク値によるマスクをかけてアクセスする。ただし、本実施形態では、データを記憶する領域はなく、ヒットかミスヒットかのみを出力する。なお、アドレス記憶部１１２２の実現方法はこれに限定されるものではない。
【００５４】
また、本実施形態では、スカラプロセッサ１１からＶＳＴおよびＬＤＳが発行され、ベクトルプロセッサ１２がＶＳＴを実行し、スカラプロセッサ１１がＬＤＳ発行制御を行う構成であるが、これに限定されるものではない。
【００５５】
次に、本発明の第２の実施形態について説明する。
【００５６】
第１の実施形態では、ベクトル長ＶＬが判明するタイミングがベースアドレスＢおよび距離Ｄが判明するタイミングよりも遅い場合、ベクトル長ＶＬが判明するまでバウンダリ生成およびマスク生成を行うことができず、処理の遅延が生じる。そこで、第２の実施形態では、ベクトル長ＶＬが判明するタイミングがベースアドレスＢおよび距離Ｄのそれよりも遅い場合にも、遅延時間をより減少させること目的とする。
【００５７】
図５に、第２の実施形態におけるバウンダリチェック回路の構成を示す。
【００５８】
第２の実施形態では、第１の実施形態のバウンダリチェック回路の構成に加え、エンコーダ５１およびセレクタ５２が設けられている。これにより、ベクトル長ＶＬが判明する前に、ベースアドレスＢおよび距離Ｄのみを用いてマスクの候補を複数作成しておき、ベクトル長ＶＬが判明した時に、ベクトル長ＶＬの値によって、作成した複数のマスクのうち1つを選択するようにするものである。その結果、第２の実施形態では、第１の実施形態における回路図（図２）と比較すると、複数の演算器を用意する分のハードウェアの追加が必要となるが、ベクトル長ＶＬが判明してからマスクを生成するまでの処理を高速化することができる。
【００５９】
具体的に、第２の実施形態では、アドレス演算器２１aはベクトル長ＶＬが４Ｄとしてアドレス演算を行う。アドレス演算器２１ｂはベクトル長ＶＬが１６Ｄとしてアドレス演算を行う。アドレス演算器２１ｃはベクトル長ＶＬが６４Ｄとしてアドレス演算を行う。アドレス演算器２１ｄはベクトル長が２５６Ｄとしてアドレス演算を行う。
【００６０】
エンコーダ５１は、ベクトル長ＶＬとアドレス演算器との対応関係を示すテーブル（図示しない）を持っている。ベクトル長ＶＬが１〜３Ｄの場合のバウンダリはベクトル長ＶＬが４Ｄの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長ＶＬが１〜４Ｄとアドレス演算器２１ａとが対応付けられる。また、ベクトル長ＶＬが５〜１５Ｄの場合のバウンダリはベクトル長ＶＬが１６Ｄの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長ＶＬが５〜１６Ｄとアドレス演算器２１ｂとが対応付けられる。また、ベクトル長ＶＬが１７〜６３Ｄの場合のバウンダリはベクトル長ＶＬが６４Ｄの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長ＶＬが１７〜６４Ｄとアドレス演算器２１ｃとが対応付けられる。また、ベクトル長ＶＬが６５〜２５５Ｄの場合のバウンダリはベクトル長ＶＬが２５６Ｄの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長ＶＬが６５〜２５６Ｄとアドレス演算器２１ｄとが対応付けられる。
【００６１】
エンコーダ５１は、ベクトル長ＶＬを読み出すと、テーブルに基づいて、どのマスクを選択すべきかを示すセレクト信号を生成する。次に、セレクタ５２は、そのセレクト信号を用いてあらかじめ生成しておいた複数のマスクのうち１つを選択する。例えば、エンコーダで読みだされたベクトル長ＶＬが２Ｄの場合、エンコーダ５１は、テーブルに基づいて、アドレス演算器２１ａから生成されたマスクを選択する旨を示すセレクト信号を生成する。
【００６２】
なお、エンコーダ５１はゲート８段程度の論理演算回路で構成でき、また、セレクタ５２は、４つのマスクから１つを選択する場合、ゲート４段程度の論理演算回路で構成できる。
【００６３】
第２の実施形態では、ベクトル長ＶＬが判明する前にマスク値の候補を作成することにより、バウンダリの生成を高速化することができる。
【００６４】
次に、本発明の第３の実施形態について説明する。
【００６５】
第３の実施形態では、アドレス記憶部１１２２の容量を削減するために、マスク値の圧縮を行う。
【００６６】
図６に、１２ビットのマスク値を４ビット単位に分け、その各4ビットを1ビットに圧縮する例を示す。この例では、圧縮する各4ビットのうち最下位ビットをまとめて３ビットのマスク値としてアドレス記憶部１１２２に登録する。なお、実装時には、マスク値の生成時に登録するビットのみを生成するようにしても良い。その結果、第３の実施形態では、アドレス記憶部のうちマスク値のための記憶容量を４分の１程度に削減することができる。
【００６７】
ＬＤＳ発行制御部１１２３では、アドレス記憶部１１２２から圧縮されたマスク値を読み出し、マスク値の各ビットを同じ値の4ビットにそれぞれ拡張し、解凍後のマスクとして使用する。図６の例の場合、解凍後のマスクは「111100000000」となる。圧縮前のマスク値「111110000000」と解凍後のマスク値「111100000000」とを比べると、解凍後のマスクは上位から5ビット目が「1」から「0」となっている。その結果、発行できるＬＤＳを選択する精度は下がることになるが、アドレス記憶部の容量を削減することができる。第３の実施形態では、４ビットを1ビットに圧縮する場合について説明したが、より高い精度を求められる場合には、全体の圧縮率を下げたり（2ビットから1ビットに圧縮するようにしたり）、上位のみ圧縮率を下げる等しても良い。
【００６８】
なお、この圧縮率は、求められている精度や回路規模によって、設計者が任意に選択することができる。
【００６９】
次に、本発明の第４の実施形態について説明する。
【００７０】
図７に、第１および第２の実施形態における「ＶＳＴで更新されるアドレス」、「ＬＤＳ追い越し不可と判定される範囲」を示す。第１および第２の実施の形態では、「ＶＳＴで更新されるアドレス」でないにも関わらず「ＬＤＳ追い越し不可」と判定される領域が多いという問題がある。第４の実施形態では、２種類のマスクを利用することにより、「ＶＳＴで更新されるアドレス」でないにも関わらず「ＬＤＳ追い越し不可」と判定される領域を少なくし、判定精度を向上させることを目的とする。
【００７１】
距離Ｄが２のべき乗の場合には、アドレスの上位ビットとの比較だけでなく、アドレスの下位ビットとの比較も合わせてバウンダリチェックを行うことができる。ＶＳＴによって実際に更新されるアドレスは、距離Ｄの等間隔で更新される。特に、Ｄの値が２のべき乗（２，４，８，１６、・・・２のｎ乗）の倍数の場合、更新されるアドレスの下位ビットは常に一定となる。
【００７２】
例えば、ＶＳＴの距離Ｄが「１０」（２進、１０進では２）で、ベースアドレスＢが偶数の場合（２進で最下位ビットが「０」）は、更新される可能性のあるアドレスは偶数のアドレスのみである。よって、後続のＬＤＳのアドレスが奇数（最下位ビットが「１」）であれば、ＬＤＳを追い越し実行できる。逆に、ベースアドレスＢが奇数の場合（最下位ビットが「１」）は、ＬＤＳのアドレスが偶数（最下位ビットが「０」）であれば、実行できる。つまり、ベースアドレスＢの最下位ビットとＬＤＳのアドレスが一致しなければ、ＬＤＳは実行可能である。同様に、Ｄが「１００」（１０進で４）の場合には、最下位２ビットついて比較し、一致しなければＬＤＳは実行可能となる。
【００７３】
更新されるアドレスの下位何ビットが一定となるかはＤによって決まる。Ｄの下位ビットが「１０」であれば１ビット、「１００」であれば２ビット、「１０００」であれば３ビットとなる。
【００７４】
図８に、Ｂが「110010010010」、Ｄが「000000010000」の場合の例を示す。Ｄの下位ビットが「10000」なので、Ｂ、Ｂ+Ｄ、Ｂ+２Ｄ、Ｂ+３Ｄは下位４ビットが一致するはずである。実際に計算すると、Ｂが「110010010010」、Ｂ+Ｄが「110010100010」、Ｂ+２Ｄが「110010110010」、Ｂ+３Ｄが「110011000010」となり、下位４ビットが一致している。
【００７５】
第４の実施形態におけるバウンダリ実行制御システムは、第１ないし第３の実施形態と比較すると、バウンダリ生成部の構成のみが異なる。
【００７６】
図９に、第４の実施形態におけるバウンダリ生成部９１およびアドレス記憶部９２を示す。
【００７７】
バウンダリ生成部９１はアドレス演算器９１１およびマスク生成回路９１２を備える。マスク生成回路９１２は、第１の実施形態と同様にＢおよびＢ＋（（ＶＬ−１）×Ｄ）から第１のマスクを生成するとともに、距離Ｄから第２のマスクを生成する。第２のマスクは、距離Ｄにおいて最下位ビットから連続してゼロとなっているビット部分に対応するビット部分が全て「１」、それ以外の対応するビット部分が全て「０」となるように生成される。次に、マスク生成回路９１２は、第１のマスクおよび第２のマスクの排他的論理和を生成し、アドレス記憶部９２に登録する。ＬＤＳ発行制御部１１２３は、第１のマスクおよび第２のマスクの排他的論理和で「１」となっているビットのみを比較する。その他の処理は、第１の実施形態と同様であるため、詳細な説明を省略する。
【００７８】
図１０に、第４の実施形態における「ＶＳＴで更新されるアドレス」、「ＬＤＳ追い越し不可と判定される範囲」を示す。第４の実施形態では、図１０に示すように、２種類のマスクを利用することにより、「ＶＳＴで更新されるアドレス」でないにも関わらず「ＬＤＳ追い越し不可」と判定される領域を少なくし、判定精度を向上させることができる。
【００７９】
なお、第４の実施形態と第２の実施形態との組み合わせ、第４の実施形態と第３の実施形態との組み合わせ等も可能である。
【００８０】
なお、第４の実施形態と第３の実施形態との組み合わせ（１２ビットのマスク値を４ビット単位に分けその各４ビットを１ビットに圧縮する上記例）では、第２のマスクについては、圧縮する各４ビットのうち、最下位ビットではなく最上位ビットをまとめて３ビットのマスク値としてアドレス記憶部１１２２に登録するようにすると良い。その他については、第４の実施形態および第３の実施形態と同様である。
【図面の簡単な説明】
【００８１】
【図１】本発明の第１の実施形態におけるバウンダリ実行制御システムを示すブロック図である。
【図２】バウンダリチェック回路１１２の詳細な回路図である。
【図３】マスク生成の一例を示す図である。
【図４】バウンダリ生成およびＬＤＳ発行制御についてのフローチャートを示す図である。
【図５】本発明の第２の実施形態におけるバウンダリチェック回路の構成を示す図である。
【図６】マスク値を圧縮する例を示す図である。
【図７】本発明の第１および第２の実施形態における「ＶＳＴで更新されるアドレス」、「ＬＤＳ追い越し不可と判定される範囲」を示す図である。
【図８】Ｂが「110010010010」、Ｄが「000000010000」の場合の更新されるアドレスを示す図である。
【図９】本発明の第４の実施形態におけるバウンダリ生成部９１およびアドレス記憶部９２を示す図である。
【図１０】本発明の第４の実施形態における「ＶＳＴで更新されるアドレス」、「ＬＤＳ追い越し不可と判定される範囲」を示す図である。
【図１１】関連技術におけるスヌープ処理回路の例を示す図である。
【図１２】関連技術におけるバウンダリ方式のバウンダリ実行制御システム１２０の一例を示す図である。
【図１３】関連技術におけるバウンダリチェック回路１２１２の一例を示す図である。
【図１４】比較器の構成を示す図である。
【図１５】特許文献１のバウンダリ実行制御装置１５を示す図である。
【符号の説明】
【００８２】
１    バウンダリ実行制御システム
１１  スカラプロセッサ
１１１  スヌープ処理回路
１１２  バウンダリチェック回路
１１２１  バウンダリ生成部
１１２２  アドレス記憶部
１１２３  スカラロード命令発行制御部（ＬＤＳ発行制御部）
１１２４  マスク生成回路
１１３  Ｌ１キャッシュ
１２  ベクトルプロセッサ
１３  Ｌ２キャッシュ
１４  メモリ
２１  アドレス演算器
２２  マスク生成回路
２３  テーブル
２４  比較器
５１  エンコーダ
５２  セレクタ
９１  バウンダリ生成部
９１１  アドレス演算器
９１２  マスク生成回路
９２  アドレス記憶部
１２０  バウンダリ実行制御システム１２１  スカラプロセッサ
１２１１  スヌープ処理回路
１２１２  バウンダリチェック回路
１２１３  バウンダリ生成部
１２１４  ＬＤＳ発行制御部
１２１５  アドレス記憶部
１２１６  バウンダリ生成部
１２２  ベクトルプロセッサ
１２３  Ｌ２キャッシュ
１２４  メモリ
１３  バウンダリチェック回路
１３１  バウンダリ生成部
１３２  テーブル
１３３  比較器
【図１】
2010140306.tif 000003
【図２】
2010140306.tif 000004
【図３】
2010140306.tif 000005
【図４】
2010140306.tif 000006
【図５】
2010140306.tif 000007
【図６】
2010140306.tif 000008
【図７】
2010140306.tif 000009
【図８】
2010140306.tif 000010
【図９】
2010140306.tif 000011
【図１０】
2010140306.tif 000012
【図１１】
2010140306.tif 000013
【図１２】
2010140306.tif 000014
【図１３】
2010140306.tif 000015
【図１４】
2010140306.tif 000016
【図１５】
2010140306.tif 000017