(57)【要約】      （修正有）【課題】分岐命令の完了を高速化する演算処理装置を提供する。【解決手段】実行待ち分岐命令が蓄積され、分岐命令の分岐条件が確定すると実行される分岐命令の完了を管理する分岐命令実行管理部と、プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了処理待ち記憶部と、識別子で特定される命令の実行完了報告を分岐命令実行管理部から受けて、分岐命令の実行に伴う資源の更新処理を起動する完了処理部と、完了処理待ち記憶部の先頭に蓄積された識別子が分岐命令である場合に、分岐命令の完了報告を待たず、完了処理部による資源の更新処理を起動する促進部と、を備える。【選択図】図９
2015036855.tif 000002
【特許請求の範囲】
【請求項１】
実行待ち分岐命令が蓄積され、分岐命令の分岐条件が確定すると実行される分岐命令の完了を管理する分岐命令実行管理部と、
プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了処理待ち記憶部と、
前記識別子で特定される命令の実行完了報告を前記分岐命令実行管理部から受けて、前記分岐命令の実行に伴う資源の更新処理を起動する完了処理部と、
前記完了処理待ち記憶部の先頭に蓄積された識別子が分岐命令である場合に、前記分岐命令の完了報告を待たず、前記完了処理部による資源の更新処理を起動する促進部と、
を備える演算処理装置。
【請求項２】
所定の条件信号を受けて前記促進部の動作を抑止する抑止部、
をさらに備える請求項１に記載の演算処理装置。
【請求項３】
前記演算処理装置は、複数のスレッドを並行して実行する演算処理装置であり、
前記スレッドを識別するスレッド識別子を保持するスレッド管理部をさらに備え、
前記所定の条件信号は、現在のスレッドのスレッド識別子が、前記スレッド管理部に保持された前記スレッド識別子と異なっている場合に送信される信号である、
請求項２に記載の演算処理装置。
【請求項４】
実行待ち分岐命令が蓄積され、分岐命令の分岐条件が確定すると実行される分岐命令の完了を管理する分岐命令実行管理部と、プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了処理待ち記憶部とを有する演算処理装置の制御方法において、
前記演算処理装置が有する完了処理部が、前記識別子で特定される命令の実行完了報告を前記分岐命令実行管理部から受けて、前記分岐命令の実行に伴う資源の更新処理を起動し、
前記演算処理装置が有する促進部が、前記完了処理待ち記憶部の先頭に蓄積された識別子が分岐命令である場合に、前記分岐命令の完了報告を待たず、前記完了処理部による資源の更新処理を起動する、
演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本案は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
図１は、スーパースカラプロセッサの構成を例示する図である。図１を参照して、スーパースカラプロセッサの構成を説明する。図１で例示するスーパースカラプロセッサは、命令フェッチアドレスを生成する命令フェッチアドレス生成器１、分岐命令の分岐予測を行う分岐予測機構２、命令をキャッシュする一次命令キャッシュ３、フェッチされた命令を解読する命令デコーダ４、解読された命令を蓄積するリザベーションステーション（RSA５、RSE６、RSF７、RSBR８）、命令の完了処理を行うCommit Stack Entry(CSE)９、オペランドアドレスを生成するオペランドアドレス生成器１０、データを格納する一次データキャッシュ１１、解読された命令を実行する演算器１２、演算の実行結果を格納する更新バッファ（固定小数点更新バッファ１３、浮動小数点更新バッファ１４）、演算の実行時に使用するレジスタ（固定小数点レジスタ１５、浮動小数点レジスタ１６）、命令のアドレスを保持するプログラムカウンタ（NEXT Program Counter（NEXT PC）１７、Program Counter（PC）１８）、条件判断に用いられるCondition Codeを格納するCondition Code（CC）レジスタ１９、を有する。
【０００３】
図１のプロセッサにおける、命令の実行は以下のように例示される。プログラムの実行順序にしたがって一次命令キャッシュ３から命令がフェッチされる。フェッチされた命令は命令デコーダ４によって解読される。命令デコーダ４によって解読された命令はリザベーションステーションと呼ばれるキュー構造のストレージに蓄積される。リザベーションステーションは、命令の種類毎に用意される。固定小数点計算用のReservation Station for Execution(RSE)６、分岐命令用のReservation Station for Branch(RSBR)８等はリザベーションステーションの例示である。リザベーションステーションに蓄積された命令は、命令実行の準備が整ったものからアウトオブオーダーで実行される。
【０００４】
命令デコーダ４で解読された命令は、例えば、解読された順番にしたがって、Instruction Identification(IID)が割り振られる。IIDとは、命令を識別する識別子の例示である。IIDが割り振られた命令は、IIDが割り振られた順番にしたがってCSE９に送られる。CSE９は、命令の完了処理を行う回路の例示である。CSE９は命令デコーダ４で解読された命
令を命令の実行順に蓄積するキュー構造のストレージと、完了処理回路とを有する。CSE
９の完了処理回路は、RSBR８や演算器１２、一次データキャッシュ１１等から各処理の完了報告を受け取る。CSE９の完了処理回路は、その受け取った完了報告と、キューに蓄積
された情報を基に、命令完了の処理を行う。この命令完了の処理をCOMMITという。命令デコーダ４で解読された命令はCSE９のキューに蓄積される。CSE９のキューに蓄積された命令は、命令処理完了の報告を待つ。各リザベーションステーションに蓄積され、アウトオブオーダーで実行された命令の完了報告は、CSE９に送られる。CSE９の完了処理回路は、CSE９のキューに蓄積された完了報告待ちの命令の中から完了報告に対応する命令を、プ
ログラム本来の実行順序にしたがってCOMMITする。命令がCOMMITされると、資源の更新が行われる。
【０００５】
図２は、分岐命令の処理を例示する図である。図２を参照して、分岐命令の処理を説明する。一次命令キャッシュ３から命令がフェッチされる。フェッチされた命令は、命令デコーダ４で解読される。解読された命令はIIDが割り振られる。IIDが割り振られた命令は、CSE９の完了処理待ち命令のキュー９A（以下、CSE９のキュー９Ａ）に蓄積される。CSE９のキュー９Ａは、プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了
処理待ち記憶部の例示である。また、解読された結果、分岐命令であると判断された命令は、RSBR８に蓄積される。RSBR８に蓄積された分岐命令は、分岐が判断できる状態になるのを待つ。分岐命令では、Condition Code（CC）レジスタ１９と呼ばれるレジスタの値によって、分岐する（TAKEN）か分岐しない（NOT TAKEN）かが確定（Resolve）する。した
がって、後続の分岐命令のResolveは、Condition Codeを変更する命令の完了を待つ。な
お、Condition Codeを変更する命令がCOMMITされた時にCCレジスタ１９は更新される。しかし、CCレジスタ１９が更新されてからRSBR８で分岐の判断を行うのでは時間がかかる。そこで、演算器１２で計算されたCondition Codeを、演算器１２からRSBR８に送ってもよい。RSBR８は演算器１２から送られたCondition Codeを基に分岐判断を行えばよい。分岐判断できる状態になるとRSBR８は分岐判断を行う。RSBR８は、分岐命令の完了報告と資源の更新情報をCSE９の完了処理回路９Ｂに送る。資源の更新情報は、例えば、上述のTAKENやNOT TAKENが例示される。RSBR８は、分岐命令の完了を管理する分岐命令実行管理部の
例示である。CSE９の完了処理回路９ＢはRSBR８からの報告を受けて、CSE９のキュー９Ａに蓄積された完了報告待ちの命令の中から完了報告に対応する分岐命令の完了処理を行い、資源の更新を行う。CSE９の完了処理回路９Bは、分岐命令の実行に伴う資源の更新処理を起動する完了処理部の例示である。
【０００６】
図３は、スーパースカラプロセッサにおける、Condition Codeを変更する命令から分岐命令への処理の流れを例示する図である。図３の横軸は、プロセッサのクロックを例示する。図３の縦軸は実行される命令の種類を例示する。図３では、Condition Codeを変更する命令として、subcc命令が例示される。図３のTOQ-IIDとは、CSE９のキュー９Ａの先頭
になっている命令のIIDである。subcc命令（IID=0x10）は、図３で例示されるsubcc命令
のIIDが0x10であることを例示している。CC（EU->IU）は、subcc命令のCondition Codeが演算器１２からRSBR８に送信されている事を例示する。EUは演算器１２を例示し、IUはRSBR８を例示している。後続分岐命令（IID=0x11）は、subcc命令によって確定したCondition Codeに基づいて分岐判断を行う分岐命令のIIDが0x11であることを例示する。Resolved（IID=0x11）は、後続分岐命令（IID=0x11）の分岐の成立、不成立の確定を示す。BR_COMPは、後続分岐命令（IID=0x11）の完了を示す信号の例示である。
【０００７】
subcc命令は、Priority（P）、Buffer 1（B1）、Buffer2（B2）、Execute（X）、Update（U）、Write（W）の５段のパイプラインで実行される。Pサイクルでは、リザベーショ
ンステーションは、実行待ちの命令の中から優先度の高いものを選んで、演算器１２に送る。B1、B2サイクルでは、演算器１２は、リザベーションステーションから送られてきた命令を実行する準備を行う。Xサイクルでは、演算器１２が命令を実行する。Uサイクルでは、CSE９が命令完了の判断を行う。Wサイクルでは、各資源の更新信号がPC１８などの資源の更新を行う。
【０００８】
分岐命令は、Resolve（R）、Complete（C）、Update（U）、Write（W）の４段のパイプラインで実行される。Rサイクルでは、分岐命令が分岐する（TAKEN）か分岐しないか（NOT TAKEN）が確定する。Cサイクルでは、命令完了の報告がRSBR８からCSE９の完了処理回
路９Ｂに送られる。UサイクルでCSE９は命令完了の判断を行う。Wサイクルでは、各資源
の更新信号が資源の更新を行う。
【０００９】
以下、図３を参照して、各サイクルの処理を説明する。第７サイクルでは、subcc命令
のCondition Codeが、演算器１２からRSBR８に送られる。第８サイクルでは、第７サイクルで送られてきたCondition Codeを基に、後続分岐命令の分岐判断が行われる。第９サイクルでは、分岐命令が完了する。分岐命令の完了を示す、BR_COMP信号１０５が生成され
る。第１０サイクルでは、資源の更新信号が作成される。第１１サイクルでは、WRITE信
号を基に、各資源の更新信号が資源の更新を行う。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−０２１７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
CSE９は、分岐命令を完了するため、Condition Codeの確定を待つ。Condition Codeは
、他の命令の実行結果等によって確定する。そのため、分岐命令は他の命令との依存関係が生じやすい。したがって、分岐命令は完了待ちの状態になりやすい。その結果として、プロセッサの性能が低下する場合がある。
【００１２】
そこで、本案では分岐命令の完了を高速化する事を課題とする。
【課題を解決するための手段】
【００１３】
そこで、本案では上記課題を解決するため、実行待ち分岐命令が蓄積され、分岐命令の分岐条件が確定すると実行される分岐命令の完了を管理する分岐命令実行管理部と、プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了処理待ち記憶部と、識別子で特定される命令の実行完了報告を分岐命令実行管理部から受けて、分岐命令の実行に伴う資源の更新処理を起動する完了処理部と、完了処理待ち記憶部の先頭に蓄積された識別子が分岐命令である場合に、分岐命令の完了報告を待たず、完了処理部による資源の更新処理を起動する促進部と、を備える演算処理装置、を開示する。
【発明の効果】
【００１４】
本案によれば、分岐命令の完了を高速化できる。
【図面の簡単な説明】
【００１５】
【図１】スーパースカラプロセッサの構成を例示する図である。
【図２】分岐命令の処理を例示する図である。
【図３】スーパースカラプロセッサにおける、Condition Codeを変更する命令から分岐命令への処理の流れを例示する図である。
【図４】複数のプロセッサとプロセッサに接続されたメモリ、プロセッサと外部装置との入出力制御を行うインターコネクト制御部を例示する図である。
【図５】比較例のシステムにおいて、Condition Codeを変更する命令から分岐命令のCOMMIT処理への流れを例示する図である。
【図６】比較例のシステムにおいて、各構成要素の処理内容をサイクル毎に例示する図である。
【図７】比較例におけるプロセッサのCOMMIT処理の回路を例示する図である。
【図８】実施形態１のシステムにおけるCondition Codeを変更する命令から分岐命令への処理の流れを例示する図である。
【図９】実施形態１のCOMMIT処理の構成を例示する図である。
【図１０】実施形態１におけるプロセッサのCOMMIT処理の回路を例示する図である。
【図１１】変形例１のCOMMIT処理の構成を例示する図である。
【図１２】変形例１におけるプロセッサのCOMMIT処理の回路を例示する図である。
【図１３】変形例１のシステムにおける、Condition Codeを変更する命令から分岐命令へのパイプライン処理を例示する図である。
【図１４】変形例１における各構成要素の処理内容をサイクル毎に例示する図である。
【図１５】変形例１において抑止信号生成回路が抑止信号を生成する場合の、Condition Codeを変更する命令から分岐命令へのパイプライン処理を例示する図である。
【図１６】変形例１において、抑止信号生成回路２３によって抑止信号が生成された場合の、各構成要素の処理をサイクル毎に例示する図である。
【図１７】本案をSMT機能を有するプロセッサに適用した場合の抑止信号生成回路を例示した図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本案で開示する各実施形態について説明する。以下の各実施形態の構成は例示であり、本案は以下で開示する実施形態の構成に限定されない。
【００１７】
＜比較例＞
比較例として、分岐命令の完了報告を待って分岐命令のCOMMIT処理を行うシステムを例示する。図４は、複数のプロセッサ（CPU４０１、CPU４０２）とプロセッサに接続されたメモリ（メモリ４０３、メモリ４０４）、プロセッサと外部装置との入出力制御を行うインターコネクト制御部４０５を例示する図である。比較例のシステムは、例えば、図４のＣＰＵ４０１、ＣＰＵ４０２に適用できる。また、比較例のシステムは、図１に例示するようなアウトオブオーダー機能及びパイプライン機能を有するスーパースカラプロセッサであってもよい。
【００１８】
図５は、比較例のシステムにおいて、Condition Codeを変更する命令から分岐命令のCOMMIT処理への流れを例示する図である。図５の横軸は、プロセッサのクロックを例示する。図５の縦軸は実行される命令の種類を例示する。図５では、Condition Codeを変更する命令として、subcc命令が例示される。TOQ-IID、subcc命令（IID=0x10）、CC（EU->IU）
、後続分岐命令（IID=0x11）の項目の意味については、図３の場合と同様であるので、説明は省略する。
【００１９】
図５を参照して、比較例のシステムにおける、分岐命令のCOMMIT処理について説明する。第７サイクルでは、subcc命令のCondition Codeが、演算器１２からRSBR８に送られる
。第８サイクルでは、第７サイクルで送られてきたCondition Codeを基に、後続分岐命令の分岐判断が行われる。第９サイクルでは、分岐命令が完了する。第１０サイクルでは、資源の更新信号が作成される。第１１サイクルでは、WRITE信号を基に、各資源の更新信
号が資源の更新を行う。
【００２０】
図６は、比較例のシステムにおいて、各構成要素の処理内容をサイクル毎に例示する図である。図６の横軸は、プロセッサのクロックを例示する。図６の縦軸は、処理を行う構成要素を例示する。
【００２１】
図６を参照して、各構成要素が各サイクルで行う処理を説明する。第７サイクルでは、subcc命令のCondition Codeが、演算器１２からRSBR８に送られる（Ｓ６１）。第８サイ
クルでは、RSBR８は、RSBR８内の命令の内容による分岐条件と、Condition Codeに基づいて、分岐するかどうか判断する（Ｓ６２）。CSE９のキュー９Ａでは、subcc命令の完了を受け、後続の分岐命令がCSE９のキュー９Ａの先頭（以下、TOQ-CSEという）となる。TOQ-CSEとなった分岐命令は、RSBR８からの完了報告であるBR_COMP信号１０５を待つ（Ｓ６３）。第９サイクルでは、各RSBR８は、分岐判断情報からCSE９に送信する分岐判断情報を
選択する。選択された分岐判断情報を基に、RSBR８はBR_COMP信号１０５及びBR_TAKEN信
号を生成する（Ｓ６４）。CSE９のキュー９Ｂでは、TOQ-CSEの分岐命令はCOMMIT処理を待つ。RSBR８からのBR_COMP信号１０５及びBR_TAKEN信号を受けて、CSE９の完了処理回路９Ｂは、TOQ_BR_COMP信号及びTOQ_BR_TAKEN信号を生成する（Ｓ６５）。TOQ_BR_COMP信号を受けて、CSE９の完了処理回路９Ｂは分岐命令の完了を判断する。CSE９の完了処理回路９Ｂは、COMMIT信号であるTOQ_COMMIT信号を生成する。さらに、CSE９の完了処理回路９Ｂ
は、TOQ_BR_TAKEN信号等を基に資源の更新信号であるWRITE信号を作成する（Ｓ６６）。WRITE信号を基に、各資源の更新信号が資源の更新を行う（Ｓ６７）。
【００２２】
図７は、比較例におけるプロセッサのCOMMIT処理の回路を例示する図である。図７は、図１におけるCSE９とRSBR８に関する部分を例示している。図７に示すように、比較例に
おけるCSE９は、CSE９のキュー９ＡとCSE９の完了処理回路９Ｂとを有する。CSE９の完了処理回路９Ｂは、WRITE信号生成回路２０、ラッチ２４ａ〜２４ｃ、AND回路１１４ａ〜１１４ｃ、OR回路１１５ａ、を有する。
【００２３】
図７を参照して、比較例におけるCOMMIT処理を説明する。分岐命令がTOQ-CSEの命令で
ある場合、CSE９のキュー９Ａは分岐命令がTOQ-CSEの命令である事を示すTOQ_BR_USE信号１０４を生成する。TOQ_BR_USE信号１０４は、ラッチ２４ａに保存される。分岐命令が完了すると、RSBR８は、分岐命令の完了を示すBR_COMP信号１０５を生成する。RSBR８の分
岐命令がTOQ-CSEの命令である場合、TOQ_BR_COMP_SEL信号１０６が生成される。TOQ_BR_COMP_SEL信号１０６は、RSBR８で実行された分岐命令がTOQ-CSEの命令である事を示す信号である。TOQ_BR_COMP_SEL信号１０６は、例えば、RSBR８からBR_COMP信号１０５を送られる命令のIIDとTOQ-CSEの命令のIIDとが一致するとCSE９の完了処理回路９Ｂで生成される。AND回路１１４ｂでは、TOQ_BR_COMP_SEL信号１０６とRSBR８から送られたBR_COMP信号
１０５とのAND演算を行い、TOQ_BR_COMP信号１０７を生成する。TOQ_BR_COMP信号１０７
は、TOQ-CSEの分岐命令の完了を示す信号である。TOQ_BR_COMP信号１０７は、ラッチ２４ｂに保存される。AND回路１１４ｃは、TOQ_BR_COMP_SEL信号１０６とRSBR８からのBR_TAKEN信号１０８とのAND演算を行い、TOQ_BR_TAKEN信号１０９を生成する。TOQ_BR_TAKEN信
号１０９は、TOQ-CSEの分岐命令が分岐した（TAKEN）ことを示す信号である。TOQ_BR_TAKEN信号１０９は、ラッチ２４ｃに保存される。
【００２４】
ラッチ２４ｂに保存されたTOQ_BR_COMP信号１０７によって、TOQ-CSEの分岐命令が完了した事がわかる。また、TOQ_BR_USE信号１０４がアサートされていない場合は、TOQ-CSE
の命令が分岐命令ではないことがわかる。そこで、OR回路１１５aでは、ラッチ２４aに保存されたTOQ_BR_USE信号１０４信号をNOT演算したものとラッチ２４ｂに保存されたTOQ_BR_COMP信号１０７とのOR演算を行い、TOQ_BR_COMMIT信号１１１を生成する。TOQ_BR_COMMIT信号１１１は、TOQ-CSEの分岐命令のCOMMIT処理を行ってもよい事を示す信号の例示で
ある。
【００２５】
AND回路１１４aは、TOQ-CSEの命令の完了を示すTOQ_COMMIT信号１１０を生成する。TOQ_COMMIT信号１１０は、TOQ_BR_COMMIT信号１１１、TOQ_EU_COMMIT信号１１２、TOQ_FCH_COMMIT信号１１３のAND演算で生成される。
【００２６】
ここで、TOQ_EU_COMMIT信号１１２は、プロセッサの実行ユニットで実行されるTOQ-CSEの命令のCOMMIT処理を行ってもよい事を示す信号の例示である。これ以降、プロセッサの実行ユニットで実行される命令を、EU命令という。TOQ_EU_COMMIT信号１１２は、例えば
、論理演算により生成される。-TOQ_EU_USE信号とTOQ_EU_COMP信号のOR演算は、TOQ_EU_COMMIT信号１１２を生成する論理演算の例示である。TOQ_EU_COMP信号は、TOQ-CSEのEU命
令が完了した事を示す信号の例示である。-TOQ_EU_USE信号は、TOQ-CSEの命令がEU命令ではない事を示す信号の例示である。TOQ-CSEの命令が分岐命令の場合、TOQ-CSEの命令はEU命令ではないので、-TOQ_EU_USE信号が生成される。その結果、TOQ_EU_COMMIT信号１１２が生成される。
【００２７】
また、TOQ_FCH_COMMIT信号１１３は、FCHポートを利用するTOQ-CSEの命令のCOMMIT処理を行ってもよい事を示す信号の例示である。これ以降、FCHポートを利用する命令を、FCH命令という。TOQ_FCH_COMMIT信号１１３は、例えば、論理演算により生成される。-TOQ_FCH_USE信号とTOQ_FCH_COMP信号のOR演算は、TOQ_FCH_COMMIT信号１１３を生成する論理演算の例示である。TOQ_FCH_COMP信号は、TOQ-CSEのFCH命令が完了した事を示す信号の例示
である。-TOQ_FCH_USE信号は、TOQ-CSEの命令がFCH命令ではない事を示す信号の例示である。TOQ-CSEの命令が分岐命令の場合、TOQ-CSEの命令はFCH命令ではないので、-TOQ_FCH_USE信号が生成される。その結果、TOQ_FCH_COMMIT信号１１３が生成される。なお、LOAD
命令やSTORE命令はFCH命令の例示である。
【００２８】
つまり、TOQ_BR_COMMIT信号１１１、TOQ_EU_COMMIT信号１１２、TOQ_FCH_COMMIT信号１１３が生成されていれば、TOQ-CSEの命令が完了したことが分かる。したがって、AND回路１１４aは、TOQ_BR_COMMIT信号１１１、TOQ_EU_COMMIT信号１１２、TOQ_FCH_COMMIT信号
１１３のAND演算を行う事で、TOQ_COMMIT信号１１０を生成する。
【００２９】
WRITE信号生成回路２０は、TOQ_COMMIT信号１１０とラッチ２４ｃに保存されたTOQ_BR_TAKEN信号１０９を基に、資源の更新情報であるWRITE信号を生成する。WRITE信号を基に
、各資源の更新信号が資源の更新を行う。
【００３０】
比較例では、RSBR８からのBR_COMP信号１０５を待つ事により、分岐命令の完了処理が
行われた。
【００３１】
＜実施形態１＞
比較例では、分岐命令の完了を待ってCOMMIT処理が行われた。実施形態１では、分岐命令の完了を待たずに行う分岐命令のCOMMIT処理を例示する。実施形態１のシステムは、例えば、図４のCPU４０１，CPU４０２に適用できる。また、実施形態１のシステムは、図１に例示するようなアウトオブオーダー機能及びパイプライン機能を有するスーパースカラプロセッサであってもよい。図１のプロセッサや図４のCPU４０１、CPU４０２は、演算処理装置の例示である。また、分岐命令はCondition Codeが確定してから所定のサイクルで完了する事を前提とする。実施形態１では、所定のサイクルが２サイクルの場合を例示する。
【００３２】
図８は、実施形態１のシステムにおけるCondition Codeを変更する命令から分岐命令への処理の流れを例示する図である。図８の横軸は、プロセッサのクロックを例示する。図８の縦軸は実行される命令の種類を例示する。ここでは、Condition Codeを変更する命令として、subcc命令を例示する。TOQ_BR_COMPは、TOQ-CSEになった後続分岐命令の完了を
示す信号の例示である。TOQ-IID、subcc命令（IID=0x10）、CC（EU->IU）、後続分岐命令（IID=0x11）、RESOLVE（IID=0x11）、BR_COMPの項目の意味については、図３の場合と同様であるので、説明は省略する。
【００３３】
図８を参照して、実施形態１における分岐命令のCOMMIT処理について説明する。第７サイクルでは、subcc命令のCondition Codeが、演算器１２からRSBR８に送られる。第８サ
イクルでは、第７サイクルで送られてきたCondition Codeを基に後続分岐命令の分岐判断が行われる。第９サイクルでは、分岐命令が完了する。BR_COMP信号１０５の生成を待た
ずに、TOQ-CSEの分岐命令の完了を示すTOQ_BR_COMP信号１０７が生成される。分岐命令の完了に伴い、分岐命令の完了を示すBR_COMP信号１０５が生成される。BR_TAKEN信号１０
８等を基にWRITE信号が作成される。第１０サイクルでは、WRITE信号を基に、各資源の更新信号が資源の更新を行う。
【００３４】
図９は、実施形態１のCOMMIT処理の構成を例示する図である。図９は、図１に例示するプロセッサのRSBR８とCSE９の部分を例示する。実施形態１のシステムは、図９に例示す
るように、CSE９のキュー９Ａ、CSE９の完了処理回路９Ｂ、分岐命令のCOMMITを高速化する分岐命令COMMIT高速化回路２２、セレクタ２５、を有する。
【００３５】
分岐命令がTOQ-CSEになると、CSE９のキュー９ＡはTOQ_BR_USE信号１０４を生成する。
分岐命令COMMIT高速化回路２２は、TOQ_BR_USE信号１０４を受信すると、分岐命令の完了処理を開始させるSET_FORCE_BR_COMP信号１０１を生成する。SET_FORCE_BR_COMP信号１０１の生成では、分岐命令COMMIT高速化回路２２は、分岐命令の完了信号であるBR_COMP信
号１０５を待たなくてよい。分岐命令COMMIT高速化回路２２は、促進部の例示である。
【００３６】
TOQ-CSEの命令が分岐命令の場合、分岐命令の前に実行されるCondition Codeを変更す
る命令は既に完了していると考えられる。そのため、分岐判断に用いるCondition Codeは確定していると考えられる。したがって、分岐命令は所定のサイクルで完了すると考えられる。実施形態１では、所定のサイクルとして、Condition Codeの確定から２サイクルで分岐命令は完了する場合を例示する。そのため、分岐命令がTOQ-CSEの命令になれば、分
岐命令は次のサイクルで完了できると考えられる。そこで、分岐命令がTOQ-CSEの命令に
なると、CSE９内での分岐命令の完了を示すTOQ_BR_COMP信号１０７が生成される。CSE９
の完了処理回路９ＢはRSBR８からの分岐命令の完了を示すBR_COMP信号１０５を待たなく
よい。その結果、分岐命令のCOMMITのタイミングが比較例と比べて１サイクル早くなる。そのため、比較例と同じタイミングで資源の更新情報をWRITE信号生成回路２０に送信し
たのでは、WRITE信号の生成に間に合わない。そこで、実施形態１では、資源の更新情報
を１サイクル早くWRITE信号生成回路２０に送信する回路が追加される。
【００３７】
図１０は、実施形態１のシステムのCOMMIT処理の回路を例示する図である。図１０は、図１におけるCSE９とRSBR８に関する部分を例示している。図１０に例示するように、実
施形態１におけるCSE９は、CSE９のキュー９ＡとCSE９の完了処理回路９Ｂとを有する。CSE９の完了処理回路９Ｂは、WRITE信号生成回路２０、ラッチ２４ａ〜２４ｄ、AND回路１１４ａ〜１１４ｃ、OR回路１１５ａ〜１１５ｂとを有する。比較例と同一の構成要素については、同一の符号を付し、その説明を省略する。
【００３８】
図１０を参照して、実施形態１のシステムのCOMMIT処理を説明する。上述の通り、分岐命令がTOQ-CSEの命令である場合、次のサイクルで分岐命令が完了すると考えられる。そ
こで、TOQ_BR_USE信号１０４が生成されると、OR回路１１５ｂはBR_COMP信号１０５を待
たずにTOQ_BR_COMP信号１０７を生成する。TOQ_BR_COMP信号１０７はラッチ２４ｂに保存される。BR_COMP信号１０５を待たないことで、TOQ_BR_COMP信号１０７を比較例より１サイクル早く生成することができる。これ以降の、TOQ_COMMIT信号１１０を生成する流れは比較例と同様であるため、その説明を省略する。
【００３９】
また、TOQ_BR_USE信号１０４は、SET_FORCE_BR_COMP信号１０１として、ラッチ２４ｄ
に保存される。ラッチ２４ｄに保存されたSET_FORCE_BR_COMP信号１０１は、FORCE_BR_COMP信号１０１ａとして、セレクタ２５に送信される。FORCE_BR_COMP信号１０１ａを受信
したセレクタ２５は、ラッチ２４ｃを迂回する経路を選択して、BR_TAKEN信号１０８をWRITE信号生成回路２０に送信する。ラッチ２４ｃを迂回することでWRITE信号の生成を１サイクル早める事ができる。
【００４０】
実施形態１によれば、RSBR８からのBR_COMP信号１０５を待たずに分岐命令の完了処理
を開始できる。そのため、分岐命令の処理サイクルを比較例の場合よりも１サイクル短縮できる。
【００４１】
＜変形例１＞
実施形態１では、分岐命令が所定のサイクルで完了する事を前提に、分岐命令の完了を高速化した。変形例１では、分岐命令が所定のサイクルで完了しない場合にも本案を適用する構成を開示する。
【００４２】
分岐命令COMMIT高速化回路２２は、所定のサイクルで分岐命令が完了することを前提と
してSET_FORCE_BR_COMP信号１０１を生成した。したがって、所定のサイクルで分岐命令
が完了しない場合、分岐命令COMMIT高速化回路２２はSET_FORCE_BR_COMP信号１０１を生
成してはいけない。そこで、変形例１では、所定のサイクルで分岐命令が完了しない場合に、分岐命令COMMIT高速化回路２２の動作を抑止する抑止信号生成回路が追加される。抑止信号生成回路は、抑止部の例示である。
【００４３】
分岐命令がTOQ-CSEであっても、所定のサイクルで分岐命令を完了できない場合として
、以下の（１）〜（３）が例示される。以下の（１）〜（３）の状態を通知する信号は、所定の条件信号の例示である。
【００４４】
（１）分岐命令の分岐予測が外れた場合は、命令の再フェッチが行われる。この場合、本実施形態では再命令フェッチの準備などが必要となり、所定のサイクルで分岐命令の完了報告が出来ない。したがって、所定のサイクルで分岐命令を完了できない場合がある。
【００４５】
（２）レジスタ間接分岐命令の場合、分岐先アドレスの値によっては例外ケースの動作が発生し得る。この場合、例外ケースを処理する時間が生ずる。そのため、分岐命令は所定のサイクルで完了しない場合がある。JUMP命令やRETURN命令は、レジスタ間接分岐命令の例示である。
【００４６】
（３）分岐命令が、Condition Codeを確定する機能を兼ねている場合が考えられる。BPR命令は、Condition Codeを確定する機能を兼ねている分岐命令の例示である。この場合
、TOQ-CSEの命令が分岐命令であってもCondition Codeが確定していない。そのため、分
岐の判断材料が揃っていない場合がある。
【００４７】
上記の（１）〜（３）の場合は、分岐命令が所定のサイクルで完了しない可能性がある。そのため、分岐命令COMMIT高速化回路２２の動作を抑制する必要がある。そこで、変形例１の抑止信号生成回路は、上記の（１）〜（３）の場合に抑止信号を分岐命令COMMIT高速化回路２２に送信する。分岐命令COMMIT高速化回路２２は、抑止信号を受信すると、SET_FORCE_BR_COMP信号１０１を生成しない。その結果、TOQ_BR_COMMIT信号１１１は、RSBR８からのBR_COMP信号１０５を待って生成される。
【００４８】
図１１は、変形例１のCOMMIT処理の構成を例示する図である。図１１は、図１におけるCSE９とRSBR８に関する部分を例示している。変形例１では、実施形態１の構成に対し、
分岐命令COMMIT高速化回路の抑止信号生成回路２３（以下、抑止信号生成回路２３）を追加する。抑止信号生成回路２３は、分岐命令COMMIT高速化回路２２の動作を抑止する回路の例示である。変形例１では、Condition Codeが確定してから２サイクルで分岐命令が完了する場合を考える。実施形態１と同じ構成要素は実施形態１と同一の符号を付し、その説明を省略する。
【００４９】
図１１を参照して、変形例１のCOMMIT処理の構成について説明する。RSBR８は、分岐命令の種類及び分岐予測ミスの情報を抑止信号生成回路２３に送信する。RSBR８からの報告によって所定のサイクルで分岐命令が完了しないと判断された場合、抑止信号生成回路２３は、分岐命令COMMIT高速化回路２２の動作を抑止する信号であるINH_SET_FORCE_BR_COMP信号１０２を、分岐命令COMMIT高速化回路２２に送信する。INH_SET_FORCE_BR_COMP信号１０２（図１１ではINH信号と省略）は、抑止信号の例示である。
【００５０】
分岐命令COMMIT高速化回路２２は、INH_SET_FORCE_BR_COMP信号１０２を受信すると、SET_FORCE_BR_COMP信号１０１を生成しない。その結果、TOQ_BR_COMMIT信号１１１は、RSBR８からのBR_COMP信号１０５を待って生成される。また、RSBR８からの資源の更新情報は、セレクタ２５によって、ラッチ２４ｃを経由してWRITE信号生成回路２０に送信される
。
【００５１】
図１２は、変形例１におけるプロセッサのCOMMIT処理の回路を例示する図である。図１２を参照して、変形例１のCOMMIT処理について説明する。実施形態１と同一の構成要素については、同一の符号を付し、その説明を省略する。抑止信号生成回路２３は、RSBR８からの分岐予測ミス、分岐命令の種類の情報に基づいて、INH_SET_FORCE_BR_COMP信号１０
２を生成する。分岐命令COMMIT高速化回路２２のAND回路１１４ｄは、INH_SET_FORCE_BR_COMP信号１０２をNOT演算したものと、TOQ_BR_USE信号１０４とのAND演算を行う。その結果、INH_SET_FORCE_BR_COMP信号１０２がアサートされた場合には、SET_FORCE_BR_COMP信号１０１は生成されない。この処理によって、分岐予測ミス等の場合には、TOQ_BR_COMMIT信号１１１は、RSBR８からのBR_COMP信号１０５を待って生成される。さらに、RSBR８からの資源の更新情報は、セレクタ２５によって、ラッチ２４ｃを経由してWRITE信号生成
回路２０に送信される。
【００５２】
図１３は、変形例１のシステムにおける、Condition Codeを変更する命令から分岐命令へのパイプライン処理を例示する図である。図１３の横軸は、プロセッサのクロックを例示する。図１３の縦軸は実行される命令の種類を例示する。図１３では、Condition Codeを変更する命令として、subcc命令が例示される。TOQ-IID、subcc命令（IID=0x10）、CC
（EU->IU）、後続分岐命令（IID=0x11）の項目の意味については、図３の場合と同様であるので、説明は省略する。
【００５３】
図１３を参照して、変形例１のシステムにおける、分岐命令のCOMMIT処理について説明する。第７サイクルでは、subcc命令のCondition Codeが、演算器１２からRSBR８に送ら
れる。第８サイクルでは、第７サイクルで送られてきたCondition Codeを基に、後続分岐命令の分岐判断が行われる。第９サイクルでは、分岐命令が完了する。 INH_SET_FORCE_BR_COMP信号１０２が生成されない場合、BR_COMP信号１０５の生成を待たずに、TOQ-CSEの分岐命令の完了を示すTOQ_BR_COMP信号１０７が生成される。分岐命令の完了に伴い、分
岐命令の完了を示すBR_COMP信号１０５が生成される。BR_TAKEN信号１０８等を基にWRITE信号が作成される。第１０サイクルでは、WRITE信号を基に、各資源の更新信号が資源の
更新を行う。
【００５４】
図１４は、変形例１における各構成要素の処理内容をサイクル毎に例示する図である。図１４の横軸は、プロセッサのクロックを例示する。図１４の縦軸は、処理を行う構成要素を例示する。
【００５５】
図１４を参照して、各構成要素が各サイクルで行う処理を説明する。第８サイクルで、subcc命令が完了し、後続の分岐命令がTOQ-CSEとなる。抑止信号生成回路２３からのINH_SET_FORCE_BR_COMP信号１０２が無い場合、分岐命令COMMIT高速化回路２２により、SET_FORCE_BR_COMP信号１０１が生成される（Ｓ１４１）。また、SET_FORCE_BR_COMP信号１０
１を基にTOQ_BR_COMP信号１０７のセット信号が生成される（Ｓ１４２）。第９サイクル
では、TOQ_BR_COMP信号１０７を受信したCSE９がTOQ_BR_COMMIT信号１１１を生成する。
また、分岐命令がTOQ-CSEの場合、EU命令やFCH命令ではないので、TOQ_EU_COMMIT信号１
１２とTOQ_FCH_COMMIT信号１１３が生成される。TOQ_BR_COMMIT信号１１１、TOQ_EU_COMMIT信号１１２、TOQ_FCH_COMMIT信号１１３の各信号をAND演算し、TOQ_COMMIT信号１１０
が生成される。資源の更新情報が、RSBR８からWRITE信号生成回路２０に送信される。資
源の更新情報としては、BR_TAKEN信号１０８等が例示される。WRITE信号生成回路２０は
、TOQ_COMMIT信号１１０とRSBR８から受信した更新情報を合わせてWRITE信号を生成する
（Ｓ１４３）。第１０サイクルでは分岐命令が完了し、WRITE信号を基に資源の更新が行
われる（Ｓ１４４）。
【００５６】
なお、上述のように、分岐命令がTOQ-CSEであっても、分岐命令が所定のサイクルで完
了しない場合がある。分岐命令が所定のサイクルで完了しない場合、分岐命令COMMIT高速化回路２２は、SET_FORCE_BR_COMP信号１０１を生成してはいけない。この場合、抑止信
号生成回路２３は、SET_FORCE_BR_COMP信号１０１の生成を抑止する抑止信号を生成する
。INH_SET_FORCE_BR_COMP信号１０２は、抑止信号の例示である。その結果、TOQ_BR_COMMIT信号１１１は、RSBR８からのBR_COMP信号１０５を待って生成される。
【００５７】
図１５は、変形例１において抑止信号生成回路２３が抑止信号を生成する場合の、Condition Codeを変更する命令から分岐命令へのパイプライン処理を例示する図である。図１５の横軸は、プロセッサのクロックを例示する。図１５の縦軸は実行される命令の種類を例示する。図１５では、Condition Codeを変更する命令として、subcc命令が例示される
。TOQ-IID、subcc命令（IID=0x10）、CC（EU->IU）、後続分岐命令（IID=0x11）の項目の意味については、図３の場合と同様であるので、説明は省略する。
【００５８】
図１５を参照して、抑止信号が生成される場合の、分岐命令のCOMMIT処理について説明する。第８サイクルでは、INH_SET_FORCE_BR_COMP信号が生成される。したがって、分岐
命令COMMIT高速化回路２２は、SET_FORCE_BR_COMP信号を生成しない。第９サイクル以降
の処理は、図５と同様のため、説明を省略する。
【００５９】
図１６は、変形例１において、抑止信号生成回路２３によって抑止信号が生成された場合の、各構成要素の処理をサイクル毎に例示する図である。図１６の横軸は、プロセッサのクロックを例示する。図１６の縦軸は、処理を行う構成要素を例示する。
【００６０】
図１６を参照して、各構成要素が各サイクルで行う処理を説明する。第８サイクルにおいて、例えば、分岐予測ミスによって命令再フェッチを行う場合、抑止信号生成回路２３は、INH_SET_FORCE_BR_COMP信号１０２を生成する。そのため、分岐命令COMMIT高速化回
路２２は、SET_FORCE_BR_COMP信号１０１を生成しない（Ｓ１６１）。そのため、TOQ-CSEになった後続分岐命令は、RSBR８からのBR_COMP信号１０５を待ってから完了する（Ｓ１
６２）。第９サイクル以降の処理は、図６と同様のため、説明を省略する。
【００６１】
変形例１では、分岐命令が所定のサイクルで完了しない場合に分岐命令COMMIT高速化回路２２の動作を抑止する。その結果、分岐命令が所定のサイクルで完了しない事があるプロセッサに対しても、本案を適用できる。
【００６２】
＜変形例２＞
実施形態１及び変形例１では、スレッドの切り替えが発生しないプロセッサに対して本案を適用した。変形例２では、Simultaneous Multithreading（SMT）機能を有するプロセッサに本案を適用する構成を例示する。SMTとは、単一プロセッサによって複数のスレッ
ドを同時に実行する機能の例示である。SMT機能を有するプロセッサに本案を用いるには
、抑止信号生成回路２３が抑止信号を生成する条件を追加すればよい。変形例２では、１サイクルにひとつのスレッドを選択して、COMMIT処理を行う構成を例示する。この場合、前後のサイクルで処理を行うスレッドが異なる場合が考えられる。スレッドが異なると実行している命令も異なる事が考えられる。そのため、異なるスレッドのSET_FORCE_BR_COMP信号１０１を用いてTOQ_BR_COMP信号１０７を生成できない。そこで、スレッドの切り替えを検出した場合、抑止信号生成回路２３は分岐命令COMMIT高速化回路２２の動作を抑止する。したがって、CSE９の完了処理回路９Ｂは、RSBR８から送信されるBR_COMP信号１０５を待ってCOMMIT処理を行う。
【００６３】
図１７は、本案をSMT機能を有するプロセッサに適用した場合の抑止信号生成回路２３
を例示した図である。図１７を参照して、変形例２で追加した抑止条件を説明する。図１
７に記載されている（１）〜（３）の抑止条件は、変形例１において所定のサイクルで分岐命令が完了できない場合として例示した（１）〜（３）にそれぞれ対応する。図１７において、NEXT_U_STRAND_ID信号１１７は、次にUサイクル完了処理を行うスレッドを示し
ている。変形例２では、スレッドの数が２本の場合を例示する。すなわち、この場合、NEXT_U_STRAND_ID信号１１７の値は、例えば、０または１となる。NEXT_U_STRAND_ID信号１１７は、NEXT_U_STRAND_ID_1TD値１１８としてラッチ２４ｅに保存される。ラッチ２４ｅは、スレッド管理部の例示である。現在のサイクルのNEXT_U_STRAND_ID信号１１７の値と、ラッチ２４ｅに保存された１サイクル前のNEXT_U_STRAND_ID_1TD信号１１８との値が異なれば、スレッドが切り替わっている。NEXT_U_STRAND_ID信号１１７とNEXT_U_STRAND_ID_1TD信号１１８は、スレッド識別子の例示である。スレッドの切り替えがあった場合、XOR回路１１６は、抑止信号をOR回路１１５ｃに出力する。OR回路１１５ｃは、INH_SET_FORCE_BR_COMP信号１０２（図１７では、INHと省略）を生成する。このスレッドの切り替え
を検知する仕組みは、所定の条件信号の例示である。
【００６４】
変形例２によれば、スレッドの切り替えを検知できる。その結果、SMT機能を有するプ
ロセッサに対しても本案を適用できる。
【００６５】
以上で開示した実施形態や変形例はそれぞれ組み合わせる事ができる。例えば、変形例１と変形例２を組み合わせることも可能である。この場合、分岐命令が所定のサイクルで完了できない場合に対応しつつSMTにも対応可能となる。
＜付記＞
本実施の形態は、以下の態様（付記と呼ぶ）を含む。各付記の構成は、他の付記の構成を組み合わせることができる。
【００６６】
（付記１）
実行待ち分岐命令が蓄積され、分岐命令の分岐条件が確定すると実行される分岐命令の完了を管理する分岐命令実行管理部と、
プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了処理待ち記憶部と、
前記識別子で特定される命令の実行完了報告を前記分岐命令実行管理部から受けて、前記分岐命令の実行に伴う資源の更新処理を起動する完了処理部と、
前記完了処理待ち記憶部の先頭に蓄積された識別子が分岐命令である場合に、前記分岐命令の完了報告を待たず、前記完了処理部による資源の更新処理を起動する促進部と、
を備える演算処理装置。
【００６７】
（付記２）
所定の条件信号を受けて前記促進部の動作を抑止する抑止部、
をさらに備える付記１に記載の演算処理装置。
【００６８】
（付記３）
前記所定の条件信号は、前記分岐命令実行管理部からの分岐命令の分岐予測ミスを通知する信号である、
付記２に記載の演算処理装置。
【００６９】
（付記４）
前記所定の条件信号は、前記分岐命令実行管理部からの分岐命令の種類を通知する信号である、
付記２または付記３に記載の演算処理装置。
【００７０】
（付記５）
前記演算処理装置は、複数のスレッドを並行して実行する演算処理装置であり、
前記スレッドを識別するスレッド識別子を保持するスレッド管理部をさらに備え、
前記所定の条件信号は、現在のスレッドのスレッド識別子が、前記スレッド管理部に保持された前記スレッド識別子と異なっている場合に送信される信号である、
付記２乃至付記４のいずれか一項に記載の演算処理装置。
【００７１】
（付記６）
実行待ち分岐命令が蓄積され、分岐命令の分岐条件が確定すると実行される分岐命令の完了を管理する分岐命令実行管理部と、プログラムの実行順に完了処理待ちの命令の識別子が蓄積される完了処理待ち記憶部とを有する演算処理装置の制御方法において、
前記演算処理装置が有する完了処理部が、前記識別子で特定される命令の実行完了報告を前記分岐命令実行管理部から受けて、前記分岐命令の実行に伴う資源の更新処理を起動し、
前記演算処理装置が有する促進部が、前記完了処理待ち記憶部の先頭に蓄積された識別子が分岐命令である場合に、前記分岐命令の完了報告を待たず、前記完了処理部による資源の更新処理を起動する、
演算処理装置の制御方法。
【符号の説明】
【００７２】
１・・・命令フェッチアドレス生成器
２・・・分岐予測機構
３・・・一次命令キャッシュ
４・・・命令デコーダ
５・・・RSA
６・・・RSE
７・・・RSF
８・・・RSBR
９・・・CSE
９A・・・CSEのキュー
９B・・・CSEの完了処理回路
１０・・・オペランドアドレス生成器
１１・・・一次キャッシュデータ
１２・・・演算器
１３・・・固定小数点更新バッファ
１４・・・浮動小数点更新バッファ
１５・・・固定小数点レジスタ
１６・・・浮動小数点レジスタ
１７・・・NEXT Program Counter（NEXT PC）
１８・・・Program Counter（PC）
１９・・・CCレジスタ
２０・・・WRITE信号生成回路
２２・・・分岐命令COMMIT高速化回路
２３・・・抑止信号生成回路
２４a〜２４ｅ・・・ラッチ
２５・・・セレクタ
１０１・・・SET_FORCE_BR_COMP信号
１０１a・・・FORCE_BR_COMP信号
１０２・・・INH_SET_FORCE_BR_COMP信号（INH信号）
１０３・・・BR_USE信号
１０４・・・TOQ_BR_USE信号
１０５・・・BR_COMP信号
１０６・・・TOQ_BR_COMP_SEL信号
１０７・・・TOQ_BR_COMP信号
１０８・・・BR_TAKEN信号
１０９・・・TOQ_BR_TAKEN信号
１１０・・・TOQ_COMMIT信号
１１１・・・TOQ_BR_COMMIT信号
１１２・・・TOQ_EU_COMMIT信号
１１３・・・TOQ_FCH_COMMIT信号
１１４ａ〜１１４ｄ・・・AND回路
１１５ａ〜１１５ｃ・・・OR回路
１１６・・・XOR回路
１１７・・・NEXT_U_STRAND_ID信号
１１８・・・NEXT_U_STRAND_ID_1TD信号
【図１】
2015036855.tif 000003
【図２】
2015036855.tif 000004
【図３】
2015036855.tif 000005
【図４】
2015036855.tif 000006
【図５】
2015036855.tif 000007
【図６】
2015036855.tif 000008
【図７】
2015036855.tif 000009
【図８】
2015036855.tif 000010
【図９】
2015036855.tif 000011
【図１０】
2015036855.tif 000012
【図１１】
2015036855.tif 000013
【図１２】
2015036855.tif 000014
【図１３】
2015036855.tif 000015
【図１４】
2015036855.tif 000016
【図１５】
2015036855.tif 000017
【図１６】
2015036855.tif 000018
【図１７】
2015036855.tif 000019