(57)【要約】【課題】パイプラインストールの軽減を達成して、半導体集積回路におけるパフォーマンスの低下を抑止できるようにする。【解決手段】複数の機能ユニットのうちの少なくとも一部が電源遮断可能に構成された機能ユニット部１１０と、電源遮断可能な機能ユニット１１４〜１１６に関する処理内容を探査する処理内容探査部１０１と、処理内容探査部１０１で探査した処理内容に基づいて、電源遮断可能な機能ユニット１１４〜１１６に対する電源投入又は電源遮断に係る予測をする電源投入予測部１０２と、電源投入予測部１０２の予測結果に基づいて、電源遮断可能な機能ユニット１１４〜１１６に対する電源投入又は電源遮断を制御する電源制御部１０３を具備するようにする。【選択図】図１
2008186854.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能ユニットのうちの少なくとも一部が電源遮断可能に構成された機能ユニット部と、
前記電源遮断可能な機能ユニットに関する処理内容を探査する処理内容探査部と、
前記処理内容探査部で探査した処理内容に基づいて、前記電源遮断可能な機能ユニットに対する電源投入又は電源遮断に係る予測をする電源投入予測部と、
前記電源投入予測部の予測結果に基づいて、前記電源遮断可能な機能ユニットに対する電源投入又は電源遮断を制御する電源制御部と
を有することを特徴とする半導体集積回路。
【請求項２】
前記電源投入予測部は、過去に実行された命令列の実行から得られた分岐履歴、あるいは、電源投入予測に係る履歴に従って、前記電源遮断可能な機能ユニットに対する電源投入又は電源遮断に係る予測をすることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記電源投入予測部は、前記電源投入に係る予測データの状態遷移、あるいは、前記電源投入に係る予測データの重み付けに応じて、前記電源投入に係る予測を変更することを特徴とする請求項１に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電源遮断可能に構成された機能ユニットを具備する半導体集積回路に関するものである。
【背景技術】
【０００２】
近年のＣＭＯＳ半導体集積回路の微細化に伴い、ＣＭＯＳ半導体集積回路のゲート電極からのリーク電流の増加が設計・製造面で大きな問題となっている。
【０００３】
特に１００ｎｍ以下の微細プロセスでは、半導体集積回路の総消費電力においてリーク電流の占める割合は、増加の一途を辿り、今後、チップ内部の電力消費を抑止していくことが、製造後確実に動作するチップを設計していく上で重要な課題となっている。
【０００４】
例えば、微細化に従ってゲート酸化膜の薄膜化が進む中、リーク電流を減らすためにも、電源電圧を低電圧化していく必要があるが、回路の高速性を確保するためにゲート電極に掛ける電圧の低電圧化が進まない。この結果、電源電圧の低電圧化よりも、電源電圧に対応するリーク電流の急激な増加傾向が顕著になってきている。
【０００５】
また、更に、微細化につれてスケーリングしてきた電源電圧が受ける電源電圧の降下の要因も大きな問題になりつつある。
【０００６】
このようなリーク電流の増加に対し、半導体プロセスの開発面では、ポリシリコンとゲートチャネルを遮断する誘電物質の素材として、シリコン酸化膜の代わりに、高誘電率で膜厚を厚くすることが可能な別の素材を開発しようとしている。しかしながら、まだまだ広く一般に利用されるほどの実用化には至っていない。
【０００７】
一方、半導体集積回路の設計面では、１００ｎｍ以下のプロセスで起こる消費電力削減の課題に応えられる様、従来から幾つかの新規技術を導入して対応してきた。例えば、リーク電流を削減する直接的な代表的な方法として、１３０ｎｍプロセスの世代から比較的よく使われるようになってきた技術で、マルチＶｔｈセルを利用したレイアウト手法がある（例えば、下記の特許文献１参照）。
【０００８】
このマルチＶｔｈセルを利用したレイアウト手法とは、スピードが遅いが、リーク電流の少ないゲート電圧閾値の高いセルと、スピードは速いが、リーク電流の多いゲート電圧閾値の低いセルとを同一チップ内に混在させるというものである。すなわち、タイミングに余裕のあるパスのセルを高い閾値の低速セルへマッピングし、クリティカルパスのセルを低い閾値の高速セルへマッピングさせることにより、タイミングを満たしつつチップ全体での消費電力の削減を達成するものである。
【０００９】
なお、同じ設計面での消費電力削減の施策として、クロックゲーティングや回路量の削減などの方法が実施されている。
【００１０】
しかしながら、これらの方法は動作時に消費する電力を削減するための方法であり、ここでは、マルチＶｔｈセルを利用したレイアウト方法とは異なるものとして議論する。この理由は、消費電力削減のためにクロックゲーティングや回路量の削減などの方法も確かに重要で、設計面での消費電力削減の施策として常に考慮されていなければならない方法論ではあるが、問題をトランジスタの更なる微細化に起因するリーク電流増加の傾向に絞った場合、リーク電流削減の直接的な効果を期待できる施策ではないからである。
【００１１】
一方、設計面でのリーク電流削減の直接的な施策の１つとして、微細化の進展に伴い注目されているのがマルチ電源電圧や、電源の遮断である。
【００１２】
ゲート酸化膜に常に高い電圧が掛かった状態では、リーク電流が多く流れる。しかしながら、回路スピードを犠牲にして、低いゲート電圧でトランジスタを動作させたり、使っていない回路の電源を遮断しトランジスタに電圧がかかっていない状態にしたりすることにより、リーク電流を劇的に削減できることが分かっている。マルチ電源電圧ドメインや、電源遮断の設計手法自体は、携帯機器向けの半導体集積回路で既に広く用いられている方法である。
【００１３】
これらの実装方法は、レベルコンバータやＭＴＣＭＯＳ、セレクティブＭＴＣＭＯＳなどの電源電圧を変更することのできる特殊な回路を利用して実施されている。また、マルチ電源電圧ドメインに関連して、ドメイン内の電圧を動作スピードにあわせて変更するバリアブル電圧の技術も実施されている。
【００１４】
しかしながら、意図的にバリアブル電圧を複数設けた状態では、動作保障が難しいためにＡＳＩＣやゲートアレイの設計形態でこのような設計手法がとられることは稀である。リーク電流対策の観点からは、ＡＳＩＣやゲートアレイの設計形態では、マルチ電源電圧ドメインと電源遮断が採用されることが多い。
【００１５】
マルチ電源電圧ドメインの設計手法には、周辺モジュールと比較して低速動作でよいが定常的に動作させたい部分を実装するのに適している。電源遮断は、動作させるときは高速で動作させたいが、定常的には動作していなくても良い部分を実装するのに適している。
また、電源遮断は、リーク電流削減の効果が高い反面、電源遮断状態から安定動作可能な状態に復帰するまでの時間が回路の動作スピードと比較して長いという利用上の難しさがある。
【００１６】
ここで、定常的には動作しないが、通常動作には高速で動作させたい機能モジュールを電源遮断により実装したと仮定し、電源遮断を行った機能モジュールが他の機能単位で処理を行う場合のデータの依存関係を持っているような場合を考える。
【００１７】
このような場合、電源遮断を行ったブロックでは、当該ブロックでの処理が必要だと判定した時点で電源投入を行うと、電源遮断状態から回路が安定動作可能な状態に復帰するまでのウェイクアップ時間が、いわゆるパイプラインストールを引き起こす原因となる。
【００１８】
このパイプラインストールがどれほどの時間幅のペナルティとして現れてくるかというと、今日の半導体集積回路のマイクロプロセッサは、高速なもので数ＧＨｚに達する一方、電源遮断されていたブロックが電源投入後に利用可能になるまでには、数マイクロ秒程度のウェイクアップ時間が必要である。すなわち、数ナノ秒のオーダーでパイプライン動作するマイクロプロセッサが、電源遮断拡張機能を呼び出して必要なデータを取得するためには、まず拡張機能が動作し始めるまでの段階で既に数マイクロ秒のオーバーヘッドを生じることになる。
【００１９】
このウェイクアップ動作と通常処理の時間スケールのギャップは解消することが難しいため、従来手法ではウェイクアップ動作を行うブロックと定常的に動作させる部位との間で可能な限り処理の依存性を排除してハードウェア化することが行われている。
また、制御については、定常的に動作させる部分で動作させるソフトウェアにより電源制御が行われ、ウェイクアップ動作と同等の処理速度で電源分離箇所にアクセスするのが一般的である。そして、これは、リーク電流が問題にならない場合の設計手法としては、十分確立された方法論であった。
【００２０】
しかしながら、９０ｎｍ以下のプロセスでのリーク電流による消費電力を考慮に入れた場合、従来通りの設計手法により作成された半導体集積回路では、総消費電力においてリーク電流の占める割合がついに４割を超えるということが分かってきた。また、更なる微細化では、５割以上がリーク電流のために消費されるということも分かってきた。
【００２１】
この観点から、今後の微細化プロセスでの設計面でのリーク電流の削減を視野に入れると、動作スピードと同等の時間スケールで電源投入スイッチのオン、オフを制御できることが望ましい。
【００２２】
以上のことから、パフォーマンスを維持したままリーク電流削減のために電源制御を行う状況は、従来取られていた方法とは全く別のウェイクアップの制御を要する。すなわち、ウェイクアップ動作を行うブロックを別の処理系へ分離してソフトウェアで制御する方法とは全く別の解決策が必要となる。そして、リーク電流を削減する目的で実施する電源遮断、電源投入に起因するパイプライン処理のストールを、マイクロプロセッサの動作と同等の時間スケールで直接改善するような技術はまだない。
【００２３】
【特許文献１】特開２００２−２９９４５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
従来の技術では、半導体集積回路内で電源遮断されたブロックを電源投入する場合、電源投入されたブロックの回路動作が安定化するのを待ってから処理を開始するのが一般的であった。このため、依存関係のある命令や処理がウェイクアップを行うとパイプラインストールを起こす可能性があり、機能の組み合わせごとに電源制御の手順を最適化することは自動化が難しい。
【００２５】
また、例え自動化がなされていたとしても、回路動作安定化のウェイト時間を顕に持つ特別な制御シーケンスで構成されていることが多く、同一ブロックの電源遮断と電源投入を繰り返すような制御では、多くの待ち時間が発生してしまう。
【００２６】
また、特別な制御シーケンスを利用することで処理の柔軟な組み合わせが阻害され、ソフトウェアで記述された汎用性、移植性を阻害する可能性がある。また、微細化プロセスで設計された半導体集積回路では、電源遮断と電源投入によりリーク電流削減の効果を得ることが目的である。
【００２７】
多くの場合、チップ内部の特定の電源ドメインで電源分離されたブロックに対して電源遮断と電源投入を実施するため、頻繁に回路ブロックの電源遮断と電源投入を繰り返すような制御が前提となる。
【００２８】
しかしながら、回路動作安定化のウェイト時間を顕に持つような従来の制御シーケンスで電源遮断と電源投入の繰り返しを制御すると、パイプラインストールの発生により半導体集積回路におけるパフォーマンスのボトルネックとなることが容易に予想できる。
【００２９】
本発明は上述の問題点に鑑みてなされたものであり、パイプラインストールの軽減を達成して、半導体集積回路におけるパフォーマンスの低下を抑止できるようにすることを目的とする。
【課題を解決するための手段】
【００３０】
本発明の半導体集積回路は、複数の機能ユニットのうちの少なくとも一部が電源遮断可能に構成された機能ユニット部と、前記電源遮断可能な機能ユニットに関する処理内容を探査する処理内容探査部と、前記処理内容探査部で探査した処理内容に基づいて、前記電源遮断可能な機能ユニットに対する電源投入又は電源遮断に係る予測をする電源投入予測部と、前記電源投入予測部の予測結果に基づいて、前記電源遮断可能な機能ユニットに対する電源投入又は電源遮断を制御する電源制御部とを有する。
【発明の効果】
【００３１】
本発明によれば、パイプラインストールの軽減を達成し、半導体集積回路におけるパフォーマンスの低下を抑止することができる。
【発明を実施するための最良の形態】
【００３２】
次に、添付図面を参照しなから、本発明の実施形態について説明する。
【００３３】
図１は、本発明の実施形態に係る半導体集積回路の概略構成を示すブロック図である。
具体的に、図１には、本発明に係る半導体集積回路の最も基本的な構成を示しており、読み込んだ命令に従ってデータを処理する半導体集積回路のデータ処理システムを示している。
【００３４】
図１に示す半導体集積回路１００では、電源制御を必要としない系での処理においては、命令フェッチ１０４により命令を取得する。そして、命令デコード１０５において、命令フェッチ１０４によりフェッチした命令をデコードする。そして、命令ディスパッチ１０６において、命令デコード１０５でデコードされた命令に基づく処理を、機能ユニット部１１０の各機能ユニット１１１〜１１６に振り分けてデータを処理する。
【００３５】
ここで、図１に示す半導体集積回路１００において電源の遮断、投入を制御する場合は、処理内容探査部１０１、電源投入予測部１０２、及び、電源制御部１０３により先行電源投入を実施する。すなわち、先行電源投入は、以下で説明するように、先行電源投入予測条件の登録と、先行電源投入予測の決定との２つのフェーズに分割してなされる。
【００３６】
まず、先行電源投入条件の登録のフェーズについて以下に説明する。
処理内容探査部１０１では、ある命令列の最初の実行時に命令フェッチ１０４より取得した命令内容をもとに、電源分離されたブロック（機能ユニット）に対する命令が実行される場合の対象となるブロックの探査を行う。
【００３７】
具体的に、処理内容探査部１０１で命令内容を探査する際に行うのは、電源遮断が可能なブロック（機能ユニット）へ命令発行を行う特定オペコードの検出と、アクセス先として電源遮断が可能なブロック内部の処理に関係するオペランドの検出である。すなわち、処理内容探査部１０１は、電源遮断可能な機能ユニットに関する処理内容を探査する。
【００３８】
なお、処理内容探査部１０１は、命令デコード１０５と共通化できる処理がある場合には、同一モジュールとして実装しても良いものとする。また、以下、本明細書内では、機能単位をモジュールと呼び、電源ドメインにより他のモジュールと分離あるいは統合される単位のブロックと区別して呼ぶものとする。
【００３９】
電源投入予測部１０２では、命令ストリームに基づく特徴的なデータを抽出し、先行電源投入予測条件として保持する。ここで、本発明が意図する電源投入予測部１０２の回路は、命令ストリームに基づいた実行命令の推定を行う回路全般を指している。
【００４０】
一般的に命令ストリームに基づく実行命令の推定としては、命令アドレスの部分変化を利用する方法、分岐予測の機構を利用する方法、トレースキャッシュを利用する方法、ループ解析の結果を利用する方法、あるいは、これらを組み合わせた方法が使われる。後に示す本発明の実施形態においては、命令アドレスの部分変化を利用する方法、分岐予測の機構を利用する方法の２種を示す。
【００４１】
電源投入予測部１０２として、分岐予測の機構を利用する方法のように、予測の当たり外れに従って、次の推論方法を変える場合は、命令がフェッチされる都度、先行電源投入予測条件がアップデートされる。
【００４２】
次に、先行電源投入予測の決定のフェーズについて以下に説明する。
まず、電源投入予測部１０２に先行して、命令アドレスが通知されていることが前提となる。上記命令アドレスに基づくデータを取得できた場合、電源投入予測部１０２では、当該命令アドレスか、あるいは、当該命令アドレスを加工して得られる情報を用いて、各電源ブロックに対する電源投入を指示する。
【００４３】
ここで、機能ユニット部１１０は、複数の機能ユニット１１１〜１１６のうちの少なくとも一部が電源遮断可能に構成されている。図１に示す例では、電源遮断可能な電源ブロックとして、第４の機能ユニット１１４、第５の機能ユニット１１５及び第６の機能ユニット１１６が電源の投入、遮断の制御対象となっている。そして、電源投入予測部１０２は、処理内容探査部１０１で探査した処理内容に基づいて、電源遮断可能な機能ユニット（１１４〜１１６）に対する電源投入又は電源遮断に係る予測を行う。
【００４４】
電源制御部１０３は、電源投入予測部１０２の予測結果に基づいて、電源遮断可能な機能ユニット（１１４〜１１６）に対する電源投入又は電源遮断を制御する。
【００４５】
図２は、図１に示す電源遮断が可能な第４の機能ユニット（機能ユニット４）の電源遮断に関する基本的な構成を示すブロック図である。なお、図２に示す例では、第４の機能ユニット１１４について示しているが、電源遮断が可能な第５の機能ユニット１１５及び第６の機能ユニット１１６についても同様である。
【００４６】
電源遮断が可能な第４の機能ユニット１１４内部のデータ処理部２０１は、電源には直接接続されており、グランドにはＮＭＯＳトランジスタ２００を介して接続されている。そして、データ処理部２０１は、命令コード２０２、及び、データイン２０３を入力とし、コンディションコード等の処理結果コード２０４、処理結果であるデータアウト２０５、及び、処理状態２０６を出力する。処理状態２０６の出力は、データ処理部２０１の内部で処理が実行されていることを示しており、電源遮断の抑止信号として利用される。
【００４７】
ＮＭＯＳトランジスタ２００は、電源遮断の制御に使われており、電源制御部１０３の指示に従って、データ処理部２０１の電源遮断、投入を実施する。
【００４８】
以下、命令アドレスの部分変化を利用する方法、分岐予測の機構を利用する方法の２種類の方法について説明する。
【００４９】
まず、命令アドレスの部分変化を利用する方法の実施形態を示す。
図３は、命令アドレスの局所性を利用して大域的なアドレス変化を検出する方法を実現するための電源投入予測部１０２に係る概略構成を示すブロック図である。すなわち、命令フェッチ１０４に存在するプログラムカウンタの命令アドレス３０１と、前サイクルの命令部分アドレス３０２とを比較器３０５で比較することにより、大域的なアドレスが変化したことを検出し、カウンタ３０７のスタートトリガーとする。また、一度、トリガーがかかったカウンタ３０７は、再度大域アドレスの更新があってもそのままカウントを続けるものとする。
【００５０】
ウェイト時間設定レジスタ３０６には、大域的なアドレス変化をトリガーとして電源投入を行う場合に、トリガーを有効とする最大の時間幅が登録されている。
【００５１】
大域的なアドレス変化を検出してカウンタ３０７が走り始め、ウェイト時間設定レジスタ３０６に設定されている時間内に、処理内容探査部１０１が命令データ３０８の電源制御関連の命令を検出すると、カウンタ３０７がストップする。そして、カウンタ３０７から電源制御更新のイネーブルが先行電源投入条件登録部３０９に通知される。ここで、命令データ３０８は、命令フェッチ１０４に存在するものである。
【００５２】
すなわち、ウェイト時間設定レジスタ３０６に設定されている時間を過ぎてしまうと、先行電源投入条件を更新することができなくなる仕組みである。
【００５３】
先行電源投入条件登録部３０９では、この状況を受けて内部に電源投入ブロックＩＤコードと、電源投入履歴としてカウンタ３０７がストップした値を記録する。
【００５４】
図３では、排他的論理和（ＸＯＲ）３０３及び３０４により、大域的アドレス変化が起こった場合のインデックスを生成しているが、命令アドレスの１部分であってもかまわない。排他的論理和（ＸＯＲ）３０３及び３０４が２系統存在する理由は、命令実行中の先行電源投入登録部３０９に対して登録を行う系と、先行電源投入登録部３０９から先行電源投入予測を行う系が独立に動作する必要があるからである。
【００５５】
命令データ３０８は、通常の実行パスの場合で先行電源投入予測に用いられる場合は、処理内容探査部１０１を経て、電源制御命令の検出と電源投入ブロックＩＤコードの検出に利用される以外に、ソフトウェア実行中の場合は、命令デコード１０５と命令ディスパッチ１０６を経て命令実行される。
【００５６】
図４は、図３の先行電源投入登録部３０９における先行電源投入条件の登録例を示す図である。ここで、図３と同様の構成については同様の符号を付し、その詳細な説明は省略する。
【００５７】
先行電源投入条件の登録の系である排他的論理和（ＸＯＲ）３０４を使い、インデックスを合成して先行電源投入条件登録部３０９のエントリを定め、電源投入ブロックＩＤコード３０９１と電源投入履歴３０９２を対応する記憶領域に登録する。ここで、電源投入履歴３０９２としては、今までの予測の履歴情報でも良いし、後に図９で示す２ビット飽和カウンタのような状態遷移をもとに設定した値であっても良い。
【００５８】
カウンタ３０７は、図３に示すウェイト時間設定レジスタ３０６での設定時間内に電源制御関連命令を検出して、先行電源投入条件登録部３０９への書き込みをイネーブル制御する。
【００５９】
図５は、図３の先行電源投入登録部３０９における先行電源投入条件予測例を示す図である。ここで、図３と同様の構成については同様の符号を付し、その詳細な説明は省略する。
【００６０】
先行電源投入予測の系である排他的論理和（ＸＯＲ）３０３を使い、インデックスを合成して先行電源投入条件登録部３０９のエントリを定め、対応する電源投入ブロックＩＤコード３０９１と電源投入履歴３０９２を読み出す。なお、電源遮断に関しては、図１５と同等の回路により実施する。この図１５に関しては、後述する分岐予測の機構を利用する電源制御のところで詳しく説明する。
【００６１】
次に、分岐予測の機構を利用する電源制御の方法の実施形態を説明する前に、分岐予測の基本的な仕組みについて説明を行う。
【００６２】
図６は、グローバルな分岐履歴を利用するgshare分岐予測器の概略構成を示すブロック図である。
【００６３】
gshare分岐予測器６００の分岐予測条件の登録処理では、グローバル分岐履歴６０２をもとに分岐命令アドレス６０１の一部を排他的論理和演算でハッシュ処理し、分岐パターン履歴テーブル６０４のインデックス情報となる合成インデックス６０３を合成する。
【００６４】
図９で示される状態遷移を持つ２ビット飽和カウンタであるカウンタ６０６が、合成インデックス６０３で指示された分岐予測エントリ６０５に対応する現在の分岐パターン履歴テーブル６０４の値をもとに、実際の分岐により状態遷移させた値で上書きを行う。そして、分岐予測条件を更新する。
【００６５】
また、グローバル分岐履歴６０２は、シフトレジスタにグローバルな分岐履歴を格納しており、分岐命令を実行する都度、実際の分岐状態をもとにグローバル分岐履歴を更新する。なお、分岐予測処理では、実行前に分岐命令アドレス６０１を取得していることが前提である。
【００６６】
gshare分岐予測器６００は、分岐命令アドレス６０１をもとに、分岐予測条件登録の場合と同じ手順で分岐パターン履歴テーブル６０４に対する合成インデックス６０３を生成する。分岐パターン履歴テーブル６０４をインデックスして得られる分岐予測エントリ６０５の値により、以降の命令のプリフェッチを行うことができる。
【００６７】
図７は、ローカルな分岐履歴を２レベルに分けて管理するローカル履歴２レベル適応型分岐予測器の概略構成を示すブロック図である。ここで、図６と同様の構成については同様の符号を付し、その詳細な説明は省略する。
【００６８】
ローカル履歴２レベル適応型分岐予測器７００の分岐予測条件の登録処理では、分岐命令アドレス６０１のｊビットの中位アドレスをインデックスとして、ローカル分岐履歴を複数持つ分岐履歴テーブル７０１から、ｌ番目のローカル分岐履歴７０２を選択する。
【００６９】
このローカル分岐履歴７０２の値をインデックスとして、分岐パターン履歴テーブルを複数持つ分岐予測テーブル７０３から、ｎ番目の分岐パターン履歴テーブルを選択する。一方、分岐命令アドレス６０１のｉビットの下位アドレスをインデックスとして、ｎ番目の分岐パターン履歴テーブルからｍ番目のエントリを選択し、目的の分岐予測エントリ７０４を引き当てる。
【００７０】
そして、図９で示される状態遷移を持つ２ビット飽和カウンタであるカウンタ６０６が、分岐予測エントリ７０４に対応する現在の分岐予測テーブル７０３の値をもとに、実際の分岐により状態遷移させた値で上書きを行い、分岐予測条件を更新する。
【００７１】
また、ローカル分岐履歴７０２は、シフトレジスタにローカルな分岐履歴を格納しており、同一のｊビットの中位アドレスで特定される分岐命令を実行する都度、実際の分岐状態をもとにｌ番目のローカル分岐履歴が更新される。なお、分岐予測処理では、実行前に分岐命令アドレス６０１を取得していることが前提である。
【００７２】
ローカル履歴２レベル適応型分岐予測器７００は、分岐命令アドレス６０１をもとに、分岐予測条件登録の場合と同じ手順で分岐履歴テーブルのｌ番目のローカル分岐履歴７０２から履歴を引き出す。分岐予測テーブル７０３をインデックスして得られる分岐予測エントリ７０４の値により、以降の命令のプリフェッチを行うことができる。
【００７３】
図８は、２つの分岐予測器の結果を分岐の特徴に応じて採用するコンビネーション型分岐予測器の概略構成を示すブロック図である。ここで、図６と同様の構成については同様の符号を付し、その詳細な説明は省略する。
【００７４】
すなわち、コンビネーション型分岐予測器８００は、下位iビットの予測により、ローカルな分岐予測が的中しやすいかどうかを判定する制御信号を得るために、２ビット飽和カウンタ６０６と分岐パターン履歴テーブル８０３からなる予測器を有する。
【００７５】
コンビネーション型分岐予測器８００では、分岐パターン履歴テーブル８０３のエントリ８０４に登録されている予測の傾向に応じて、セレクタ８０５により第１の分岐予測部８０１及び第２の分岐予測部８０２のいずれの予測結果を用いるのかを選択する。
【００７６】
ここで、第１の分岐予測部８０１には、命令アドレスの下位ｊビットを用いるためにローカルな分岐履歴を用いる、図７のローカル履歴２レベル適応型分岐予測器７００のような分岐予測器が適している。また、第２の分岐予測部８０２には、命令アドレスの中位ｋビットを用いるために、図６のgshare分岐予測器６００のような分岐予測器が適している。
【００７７】
図９は、図６、図７及び図８の分岐パターン履歴テーブルに利用されている２ビット飽和カウンタであるカウンタ６０６の状態遷移を示す模式図である。
【００７８】
まず、最初の状態は、ユーザの要求に応じてどこを初期値としてもかまわない。状態は、図９に示す、カウンタの値０（Strongly Not Taken）、１（Weakly Not Taken）、２（Weakly Taken）、３（Strongly Taken）のいずれかをとる。
【００７９】
実行結果が分岐を採用した場合、「Taken」と判断し、最大３まで状態値をインクリメントする。実行結果が分岐を採用しなかった場合、「Not Taken」と判断し、最小０まで状態値をデクリメントする。
【００８０】
以上のように分岐予測は、過去に実行された命令列を命令アドレスの大域的あるいは局所的分布状況をもとに分岐履歴を作成し、この分岐履歴をもとに分岐予測を行っている。
【００８１】
本発明では、この分岐予測の基本的な動作を踏まえ、分岐履歴が持つ大域的あるいは局所的な命令実行経路に照らして、電源投入が必要となる電源分離ブロックを割り出し、分岐予測の機構を利用して電源制御を行うようにしている。以下、この方法の実施形態について説明する。
【００８２】
図１０は、本発明の実施形態に係る半導体集積回路において、分岐予測の機構を利用する電源制御方法を実現するための概略構成を示すブロック図である。ここで、図１と同様の構成については同様の符号を付し、その詳細な説明は省略する。
【００８３】
図１０は、図１に対して、命令のプリフェッチのための分岐予測器１００１と、フェッチアドレス選択部１００２と、レジスタファイル１００３と、コンプリーションバッファ１００４とを更に明示したものである。さらに、機能ユニット部１１０の各機能ユニット１１１〜１１６における内部構成が示されており、また、処理内容探査部１０１が命令デコード１０５の内部に構成されている。
【００８４】
図１０の半導体集積回路において、分岐予測の機構を利用する電源制御方法として特徴的な第１の点は、分岐予測器１００１の情報を用いて、電源投入予測部１０２による電源投入予測を行う点である。また、第２の点は、命令デコード１０５内に存在する処理内容探査部１０１から電源投入予測部１０２が電源投入ブロックＩＤコードを取得する点である。
【００８５】
電源制御部１０３から電源制御を受けるのは、整数演算２を行う第４の機能ユニット１１４、浮動小数点演算を行う第５の機能ユニット１１５、及び、拡張演算を行う第６の機能ユニット１１６である。
【００８６】
図１１は、図１０に示す電源投入予測部１０２の内部構成の一例を示すブロック図である。図１１には、電源投入予測部１０２に加えて、図１０に示す命令フェッチ１０４、命令デコード１０５、及び、分岐予測器１００１が示されている。ここで、図１１において分岐予測器１００１には、図６に示したgshare分岐予測器６００を適用しているが、分岐履歴と分岐予測情報を管理している分岐予測器であれば、置き換え可能である。
【００８７】
図１１において、命令デコード１０５内に統合した処理内容探査部１０１は、主に電源投入ブロックＩＤコードの判定を行い、命令データから処理に必要なブロック（機能ユニット）を特定する。そして、処理内容探査部１０１は、当該電源ブロック、あるいは、当該電源ブロックの組み合わせに対して与えられた部位特定用ＩＤコードを発行する。
【００８８】
電源投入予測部１０２は、先行電源投入予測の登録と先行電源投入の予測を行う。まず、先行電源投入予測の登録方法を以下に説明する。
【００８９】
命令実行中に発見した分岐命令のアドレスから合成したインデックスを、分岐履歴逆探査のためのインデックスリングバッファ１１０１に格納する。インデックスリングバッファ１１０１へのアクセスの制御は、インデックス履歴サイズ１１０２、先頭分岐ポインタ１１０３、末尾分岐ポインタ１１０４により制御される。
【００９０】
インデックス履歴サイズ１１０２は、インデックスの履歴をどのくらい確保しておくか、つまり、どのくらい分岐数をさかのぼって先行電源投入を行うかを指示する。先頭分岐ポインタ１１０３は、リングバッファの書き込み先頭アドレスを示しており、現在実行中の分岐命令に対するインデックスの書き込みアドレスを指示する。末尾分岐ポインタ１１０４は、リングバッファのオフセットアドレスを示しており、インデックス履歴サイズ１１０２に従って、オーバーフローしないように先頭分岐ポインタ１１０３を追尾する。
【００９１】
続いて、先頭分岐ポインタ１１０３を登録し、次の分岐命令を発見する前に、電源投入が必要なブロック（機能ユニット）での処理を必要とする命令を発見すると、ブロックＩＤコードテーブル１１０５へインデックスを発行する。
【００９２】
ブロックＩＤコードテーブル１１０５には、末尾分岐ポインタ１１０４から読み出されたインデックスに従い、処理内容探査部１０１で解析されたブロックＩＤコードが登録される。なお、このとき分岐予測器１００１も分岐命令のアドレスに基づき合成したインデックスから分岐履歴を更新しているものとする。
【００９３】
次いで、先行電源投入の予測方法を以下に説明する。
【００９４】
分岐予測中に発見した分岐命令のアドレスから合成したインデックスをもとにブロックＩＤコードテーブル１１０５にアクセスし、使用するブロックＩＤコードを読み出す。この動作と同時に、分岐予測器１００１の分岐パターン履歴テーブル６０４から分岐パターン履歴を読み出し、先行電源投入指示部１１０６へ入力する。
【００９５】
先行電源投入指示部１１０６は、先行電源投入の重み付けに照らして、入力された分岐パターン履歴から、先行電源投入の要／不要を判断し、図１０に示す電源制御部１０３に指示を与える。
【００９６】
なお、図１１において、分岐のアドレスから合成したインデックスを用いて、分岐パターン履歴から先行電源投入予測の推定を行っているが、分岐アドレスなどインデックスに変わるもので置き換えてもかまわない。この場合、インデックスリングバッファ１１０１は、アドレスを格納する分岐リングバッファとなる
【００９７】
上述したように、図１１に示す先行電源投入指示部１１０６は、電源投入の重み付けを設定できるように構成されている。
【００９８】
図１２は、分岐パターン履歴の値に基づく先行電源投入の制御態様を示す図である。
図１２には、先行電源投入指示部１１０６による電源投入の重み付け設定として、図１２（ａ）、（ｂ）、（ｃ）の３つの重み付け設定に変更を行える各制御態様が示されている。これにより、分岐予測器１００１の性能や分岐的中率により先行電源投入が受ける影響を軽減し、その最適化が可能になる。
【００９９】
図１３は、図１０に示す電源投入予測部１０２の内部構成の一例を示すブロック図である。図１３に示す電源投入予測部１０２には、図１１に示す電源投入予測部の先行電源投入指示部１１０６を備えていない。図１３に示す電源投入予測部１０２は、図１１に示す電源投入予測部に対して、電源投入パターン履歴テーブル１３０２と２ビット飽和カウンタ１３０１を更に備えている。
【０１００】
この電源投入パターン履歴テーブル１３０２と２ビット飽和カウンタ１３０１は、図９に示した通常の状態遷移を示す２ビット飽和カウンタとは別の状態遷移を行い、先行電源投入に合った形式の状態遷移に変更することができる。
【０１０１】
図１４は、図１３の電源投入パターン履歴テーブル１３０２に利用されている２ビット飽和カウンタであるカウンタ１３０１の状態遷移を示す模式図である。図１４に示すような状態遷移を適用すると、「Strongly Taken」（３）の電源投入状態から、いきなり、「Weakly Not Taken」（１）の電源遮断の状態への遷移が可能となる。このようにすることで、半導体集積回路の回路全体としては、若干パフォーマンスを落としながらも低リーク電流で動作するモードを設定することができる。
【０１０２】
図１５は、本発明の実施形態に係る半導体集積回路の電源制御部１０３の内部構成を示すブロック図である。
【０１０３】
図１５に示すように電源制御部１０３は、電源遮断が行えるよう電源分離されたブロック、あるいは、ブロックの組み合わせが定められたブロックＩＤコードと、各ブロックからの処理状況を示す信号と先行電源投入を示す信号を入力としている。そして、電源制御部１０３は、図２のＮＭＯＳトランジスタ２００で示すトランジスタのような電源制御に関するブロック毎の電源切断指示を出力する。
【０１０４】
図１５に示すように電源制御部１０３は、ブロックＩＤコード解析部１５００と、第１ブロック電源投入判定部１５０１〜第ｎブロック電源投入判定部１５１１とを有して構成されている。
【０１０５】
入力されたブロックＩＤコードは、ブロックＩＤコード解析部１５００によりデコードされ、各ブロックへ出力される。
【０１０６】
図１５では、各ブロックのデフォルトの状態を電源遮断の状態とし、ダウンカウンタが動作している間のみの電源投入を想定している。すなわち、電源切断状態のあるブロックに対して、当該ブロックが有効で先行電源投入が指示された段階で、例えば、第１ブロック電源投入判定部１５０１においては、スタンバイ期間設定レジスタ１５０２に設定されたスタンバイ期間を指定する値がタイマーダウンカウンタ１５０３にコピーされる。
【０１０７】
そして、タイマーダウンカウンタ１５０３でダウンカウントを始めると同時に、指示されたブロックに対して電源を供給するよう制御信号を送る。例えば、スタンバイ期間設定レジスタ１５０２に設定されたスタンバイ期間までに、指定ブロックが動作をし始めると、該当ブロックから処理中の信号がアサートされる。また、タイマーダウンカウンタ１５０３の設定値は、スタンバイ期間設定レジスタ１５０２に設定されたスタンバイ期間のままとなる。
【０１０８】
該当ブロックでの処理が終了して該当ブロックから処理中の信号がネゲートされると、再び、タイマーダウンカウンタ１５０３がデクリメントを開始する。最終的に、該当ブロックでの処理が終了したまま、スタンバイ期間が過ぎてタイマーダウンカウンタ１５０３がゼロを検出すると、電源遮断が行われる。
【０１０９】
図１６は、命令ストリーム１６００に対して、処理内容探査部１０１と電源投入予測部１０２で行う、先行電源投入予測の登録の動作を示す模式図である。
【０１１０】
まず、命令ストリーム１６００の少なくともデコードまでは終了している分岐命令のアドレスが、インデックス化されてインデックスリングバッファ１１０１に保存される。インデックスリングバッファ１１０１の有効なエントリは、先頭分岐ポインタ１１０３と末尾分岐ポインタ１１０４の間にある領域で、インデックス履歴サイズ１１０２に設定されたサイズで定義される。
【０１１１】
先頭分岐ポインタ１１０３は、分岐命令を実行するたびにインデックスを新しく書き込む。先頭分岐ポインタ１１０３と末尾分岐ポインタ１１０４との間がインデックス履歴サイズ１１０２よりも大きくなると、末尾分岐ポインタ１１０４は、先頭分岐ポインタ１１０３との間をインデックス履歴サイズ１１０２に設定されたサイズに保ったまま、先頭分岐ポインタ１１０３を追いかける動作をする。
【０１１２】
ここで、命令ストリーム１６００が分岐アドレスＹとなったときに、電源投入が必要な命令を実行し始めたとする。このとき、インデックス履歴サイズ１１０２に設定されたサイズ分だけ、分岐命令を遡ったインデックスＸ'は、末尾分岐ポインタ１１０４によりポイントされている。
【０１１３】
一方、処理内容探査部１０１の電源投入ブロックＩＤコードの判定により、電源投入個所の特定がなされ、ブロックＩＤコードが特定されるので、インデックスＸ'を使ってブロックＩＤコードテーブル１１０５に書き込みを行う。以上が、先行電源投入予測情報の登録処理である。
【０１１４】
図１７は、命令ストリーム１７００に対して、処理内容探査部１０１と電源投入予測部１０２により登録された先行電源投入予測情報に基づいて、電源投入予測部１０２と電源制御部１０３が先行電源投入の予測を行う動作を示す模式図である。
【０１１５】
まず、命令ストリーム１７００で命令アドレスＸの分岐命令を予測したとする。このときの命令アドレスＸからインデックスＸ'を合成する。ここで、分岐命令のインデックスＸ'により、分岐パターン履歴テーブル８０３の対応するエントリの分岐予測を取り出す。その後、例えば、図１１の電源投入予測部１０２を用いた場合は、先行電源投入指示部１１０６を経て、先行電源投入が電源投入判定部１５０１（或いは１５１１）に指示される。
【０１１６】
一方、分岐命令のインデックスＸ'に基づいてブロックＩＤコードテーブル１１０５から対応するブロックＩＤコードを取得し、ブロックＩＤコード解析部１５００でデコードを行う。そして、ブロックＩＤコード解析部１５００からの情報に基づき適切な電源投入判定部（１５０１、１５１１）から、有効なブロックへと投機的電源投入が指示される。以上が、先行電源投入の予測処理である。
【０１１７】
図１８は、一般的にシステムＬＳＩと呼ばれる半導体集積回路の概略構成を示すブロック図である。システムＬＳＩは、一般に１つ以上のＣＰＵあるいはＭＰＵと、その他いろいろな機能モジュールと複数のバスにより構成されることが多い。
【０１１８】
ここで、図１８に示されるメインプロセッサ１８０１、あるいは、命令ストリームにより制御される機能モジュール１の基本ファンクション部１８０４で命令ストリームを解釈し、他のモジュールの電源制御を行う場合が考えられる。
【０１１９】
例えば、メインプロセッサ１８０１は、拡張処理モジュールやコプロセッサ等１８０２を使用していない期間電源遮断する場合に、本発明による投機的先行電源投入を行うことができる。
【０１２０】
また、バス１８２３により接続される機能モジュール２（１８０７）などの全ての機能について、使用していない期間電源遮断する場合に、本発明による投機的先行電源投入を行うことができる。
【０１２１】
更に、バスブリッジ（１８０９、１８１２）を介して接続する、例えばＵＡＲＴ１８１５やＵＳＢ１８１８など、バスを問わず全ての機能について、使用していない期間電源遮断する場合に、本発明による投機的先行電源投入を行うことができる。
【０１２２】
本実施形態に係る半導体集積回路によれば、電源遮断可能な機能ユニットの処理開始前の予測に基づいて当該機能ユニットの電源投入又は電源遮断を制御するようにしたので、電源安定までの待機時間ペナルティを軽減することができる。これにより、パイプラインストールの軽減を達成して、半導体集積回路におけるパフォーマンスの低下を抑止することができる。
【０１２３】
更に、電源制御のハードウェアによる自動化を実現しているため、積極的に電源遮断を実施することができ、処理内容に応じた消費電力の節約が可能となる。また、電源遮断可能な機能ユニットに関する処理内容に基づいてハードウェアで制御されるので、電源遮断の手続きを、ソフトウェアあるいはＰＤＬでケアする必要が無く、実行形式及びコードの汎用性を高めることができる。
【０１２４】
また、電源遮断、電源投入のタイミングをソフトウェアあるいはＰＤＬの記述形式に影響を及ぼすことが無く、実行形式及びコードの汎用性を高めることができる。また、入力されたソフトウェアあるいはＰＤＬの命令ストリームに対応して最適化されるので、連続実行を行った場合、消費電力面と処理速度の面で、より最適な処理状態で実行することが可能になる。また、消費電力面と処理速度の面でトレードオフを思考しながら、カスタマイズを行う手段を提供し、本発明に拠り作成された半導体集積回路が搭載されるセットに対して、消費電力面と処理速度の面で最適化を行うことができる。
【０１２５】
前述した本実施形態に係る半導体集積回路を構成する図１及び図１０の各手段、並びに当該半導体集積回路の制御方法の各ステップは、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び当該プログラムを記録したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。
【０１２６】
具体的に、前記プログラムは、例えばＣＤ−ＲＯＭのような記憶媒体に記録し、或いは各種伝送媒体を介し、コンピュータに提供される。前記プログラムを記録する記憶媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。他方、前記プログラムの伝送媒体としては、プログラム情報を搬送波として伝搬させて供給するためのコンピュータネットワーク（ＬＡＮ、インターネットの等のＷＡＮ、無線通信ネットワーク等）システムにおける通信媒体を用いることができる。また、この際の通信媒体としては、光ファイバ等の有線回線や無線回線などが挙げられる。
【０１２７】
また、コンピュータが供給されたプログラムを実行することにより本実施形態に係る半導体集積回路の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）或いは他のアプリケーションソフト等と共同して本実施形態に係る半導体集積回路の機能が実現される場合や、供給されたプログラムの処理の全て、或いは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて本実施形態に係る半導体集積回路の機能が実現される場合も、かかるプログラムは本発明に含まれる。
【図面の簡単な説明】
【０１２８】
【図１】本発明の実施形態に係る半導体集積回路の概略構成を示すブロック図である。
【図２】図１に示す電源遮断が可能な第４の機能ユニット（機能ユニット４）の電源遮断に関する基本的な構成を示すブロック図である。
【図３】命令アドレスの局所性を利用して大域的なアドレス変化を検出する方法を実現するための電源投入予測部に係る概略構成を示すブロック図である。
【図４】図３の先行電源投入登録部における先行電源投入条件の登録例を示す図である。
【図５】図３の先行電源投入登録部における先行電源投入条件予測例を示す図である。
【図６】グローバルな分岐履歴を利用するgshare分岐予測器の概略構成を示すブロック図である。
【図７】ローカルな分岐履歴を２レベルに分けて管理するローカル履歴２レベル適応型分岐予測器の概略構成を示すブロック図である。
【図８】２つの分岐予測器の結果を分岐の特徴に応じて採用するコンビネーション型分岐予測器の概略構成を示すブロック図である。
【図９】図６、図７及び図８の分岐パターン履歴テーブルに利用されている２ビット飽和カウンタの状態遷移を示す模式図である。
【図１０】本発明の実施形態に係る半導体集積回路において、分岐予測の機構を利用する電源制御方法を実現するための概略構成を示すブロック図である。
【図１１】図１０に示す電源投入予測部の内部構成の一例を示すブロック図である。
【図１２】分岐パターン履歴の値に基づく先行電源投入の制御態様を示す図である。
【図１３】図１０に示す電源投入予測部の内部構成の一例を示すブロック図である。
【図１４】図１３の電源投入パターン履歴テーブルに利用されている２ビット飽和カウンタであるカウンタの状態遷移を示す模式図である。
【図１５】本発明の実施形態に係る半導体集積回路の電源制御部の内部構成を示すブロック図である。
【図１６】命令ストリームに対して、処理内容探査部と電源投入予測部で行う、先行電源投入予測の登録の動作を示す模式図である。
【図１７】命令ストリームに対して、処理内容探査部と電源投入予測部により登録された先行電源投入予測情報に基づいて、電源投入予測部と電源制御部が先行電源投入の予測を行う動作を示す模式図である。
【図１８】一般的にシステムＬＳＩと呼ばれる半導体集積回路の概略構成を示すブロック図である。
【符号の説明】
【０１２９】
１００：半導体集積回路
１０１：処理内容探査部
１０２：電源投入予測部
１０３：電源制御部
１０４：命令フェッチ
１０５：命令デコード
１０６：命令ディスパッチ
１１０：機能ユニット部
１１１〜１１６：機能ユニット
２００：ＮＭＯＳトランジスタ
２０１：データ処理部
２０２：命令コード
２０３：データイン
２０４：コンディションコード等の処理結果コード
２０５：データアウト
２０６：処理状態
３０１：プログラムカウンタの命令アドレス
３０２：命令部分アドレス
３０３：排他的論理和（ＸＯＲ）
３０４：排他的論理和（ＸＯＲ）
３０５：比較器
３０６：ウェイト時間設定レジスタ
３０７：カウンタ
３０８：命令データ
３０９：先行電源投入条件登録部
３０９１：電源投入ブロックＩＤコード
３０９２：電源投入履歴
６００：gshare分岐予測器
６０１：分岐命令アドレス
６０２：グローバル分岐履歴
６０３：合成インデックス
６０４：分岐パターン履歴テーブル
６０５：合成インデックスで指定されたエントリ
６０６：カウンタ
７００：ローカル履歴２レベル適応型分岐予測器
７０１：分岐履歴テーブル
７０２：ｌ番目のローカル分岐履歴
７０３：分岐予測テーブル
７０４：分岐予測テーブルｍ，ｎで示されるエントリ
８００：コンビネーション型分岐予測器
８０１：第１の分岐予測部（分岐予測部１）
８０２：第２の分岐予測部（分岐予測部２）
８０３：分岐パターン履歴テーブル
８０４：分岐パターン履歴テーブルのインデックスｎのエントリ
８０５：セレクタ
１００１：分岐予測器
１００２：フェッチアドレス選択部
１００３：レジスタファイル
１００４：コンプリーションバッファ
１１０１：インデックスリングバッファ
１１０２：インデックス履歴サイズレジスタ
１１０３：先頭分岐ポインタ
１１０４：末尾分岐ポインタ
１１０５：ブロックＩＤコードテーブル
１１０６：先行電源投入指示部
１３０１：２ビット飽和カウンタ
１３０２：電源投入パターン履歴テーブル
１５００：ブロックＩＤコード解析部
１５０１：第1ブロック電源投入判定部
１５０２：スタンバイ期間設定レジスタ
１５０３：タイマーダウンカウンタ
１５１１：第ｎブロック電源投入判定部
１５１２：スタンバイ期間設定レジスタ
１５１３：タイマーダウンカウンタ
１６００：命令ストリーム
１７００：命令ストリーム
１８０１：メインプロセッサ
１８０２：コプロセッサ等拡張処理モジュール
１８０３：バスインターフェース（バスＩＦ）
１８０４：機能モジュール１の基本ファンクション部
１８０５：機能モジュール１の拡張ファンクション部
１８０６：バスインターフェース（バスＩＦ）
１８０７：機能モジュール２
１８０８：ＡＨＢコントローラ
１８０９：バスブリッジ
１８１０：メモリコントローラ
１８１１：ＤＭＡ
１８１２：バスブリッジ
１８１３：タイマー／割り込みコントローラ
１８１４：ＰＩＯ
１８１５：ＵＡＲＴ
１８１６：ＵＡＲＴ
１８１７：ＧＰＩＯ
１８１８：ＵＳＢ
１８１９：ＡＨＢコントローラ
１８２０：外部インターフェース
１８２１：ＤＲＡＭインターフェース
１８２２：外部インターフェース
１８２３：バス
【図１】
2008186854.tif 000003
【図２】
2008186854.tif 000004
【図３】
2008186854.tif 000005
【図４】
2008186854.tif 000006
【図５】
2008186854.tif 000007
【図６】
2008186854.tif 000008
【図７】
2008186854.tif 000009
【図８】
2008186854.tif 000010
【図９】
2008186854.tif 000011
【図１０】
2008186854.tif 000012
【図１１】
2008186854.tif 000013
【図１２】
2008186854.tif 000014
【図１３】
2008186854.tif 000015
【図１４】
2008186854.tif 000016
【図１５】
2008186854.tif 000017
【図１６】
2008186854.tif 000018
【図１７】
2008186854.tif 000019
【図１８】
2008186854.tif 000020