(57)【特許請求の範囲】
【請求項１】
グラフィックスフレーム処理における電力消費を最小にするための方法であって、
中央処理装置(CPU)およびグラフィックス処理装置(GPU)によって協働的に実行されるグラフィックスフレーム処理を開始するステップと、
前記グラフィックスフレーム処理と関連付けられるワークロードタイプを検出するステップであって、前記ワークロードタイプが、CPU/GPUシリアルワークロードまたはCPU/GPU並列ワークロードを含む、ステップと、
グラフィックスワークロードタイプに従って適切な相互最適化アルゴリズムを選択するステップであって、シリアルワークロードのために、CPU/GPUシリアル動的クロックおよび電圧/周波数スケーリング(DCVS)相互最適化アルゴリズムのセットのうちの1つが適用され、並列ワークロードのために、CPU/GPU並列DCVS相互最適化アルゴリズムのセットのうちの1つが適用される、ステップと、
CPUアクティビティデータおよびGPUアクティビティデータを受信するステップと、
前記GPUおよび前記CPUのために利用可能なDCVSレベルのセットを決定するステップと、
前記CPUおよびGPUアクティビティデータに基づいて、前記グラフィックスフレーム処理中の前記CPUと前記GPUの合わせた電力消費を最小にする、GPU DCVSレベルとCPU DCVSレベルの最適な組合せを、前記利用可能なDCVSレベルのセットから選択するステップとを含む、
方法。
【請求項２】
前記CPUアクティビティデータおよび前記GPUアクティビティデータが、前記CPUおよび前記GPUと関連付けられたそれぞれのアクティビティプロファイラから受信される、請求項1に記載の方法。
【請求項３】
前記CPUおよび前記GPUアクティビティデータが、プロセッサワークロード、アクティブ時間、アイドル時間、および待機時間のうちの1つまたは複数を指定するデータを含む、請求項1に記載の方法。
【請求項４】
少なくとも1つのCPU温度センサおよび少なくとも1つのGPU温度センサのうちの1つまたは複数から温度データを受信するステップと、
前記GPUおよび前記CPUのうちの1つまたは複数と関連付けられる静止状態供給電流リーク(IDDQ)データを受信するステップと
をさらに含み、
前記GPU DCVSレベルと前記CPU DCVSレベルの前記最適な組合せが、前記CPUおよびGPUアクティビティデータ、ならびに前記温度データおよび前記IDDQデータのうちの1つまたは複数に基づいて選択される、請求項1に記載の方法。
【請求項５】
前記グラフィックスフレーム処理が、CPU/GPUシリアルワークロードを含み、前記GPU DCVSレベルと前記CPU DCVSレベルの前記最適な組合せが、フレームデッドラインを満たしながら、前記CPU/GPUシリアルワークロード中の前記CPUと前記GPUの前記合わせた電力消費を最小にするCPU/GPU周波数空間における動作点を含む、請求項1に記載の方法。
【請求項６】
前記グラフィックスフレーム処理が、CPU/GPU並列ワークロードを含み、
前記並列ワークロードのための前記CPUおよび前記GPUの前記合わせた電力消費を最小にするCPU DCVSレベルとGPU DCVSレベルの前記決定された最適な組合せが、さらに共通ハードウェアリソースの処理のためのアイドル時間を増やし、
前記方法は、ディスプレイドライバからの垂直同期信号に従って、前記CPU/GPU並列ワークロードおよび前記共通ハードウェアリソースを同期するステップをさらに含む、
請求項1に記載の方法。
【請求項７】
グラフィックスフレーム処理における電力消費を最小にするためのシステムであって、
中央処理装置(CPU)およびグラフィックス処理装置(GPU)によって協働的に実行されるグラフィックスフレーム処理を開始するための手段と、
前記グラフィックスフレーム処理と関連付けられるワークロードタイプを検出するための手段であって、前記ワークロードタイプが、CPU/GPUシリアルワークロードまたはCPU/GPU並列ワークロードを含む、手段と、
グラフィックスワークロードタイプに従って適切な相互最適化アルゴリズムを選択するための手段であって、シリアルワークロードのために、CPU/GPUシリアル動的クロックおよび電圧/周波数スケーリング(DCVS)相互最適化アルゴリズムのセットのうちの1つが適用され、並列ワークロードのために、CPU/GPU並列DCVS相互最適化アルゴリズムのセットのうちの1つが適用される、手段と、
CPUアクティビティデータおよびGPUアクティビティデータを受信するための手段と、
前記GPUおよび前記CPUのために利用可能なDCVSのセットを決定するための手段と、
前記CPUおよびGPUアクティビティデータに基づいて、前記グラフィックスフレーム処理中の前記CPUと前記GPUの合わせた電力消費を最小にする、GPU DCVSレベルとCPU DCVSレベルの最適な組合せを、前記利用可能なDCVSレベルのセットから選択するための手段とを含む、システム。
【請求項８】
前記CPUアクティビティデータおよび前記GPUアクティビティデータが、前記CPUおよび前記GPUと関連付けられたそれぞれのアクティビティプロファイラから受信される、請求項7に記載のシステム。
【請求項９】
前記CPUおよびGPUアクティビティデータが、プロセッサワークロード、アクティブ時間、アイドル時間、および待機時間のうちの1つまたは複数を指定するデータを含む、請求項7に記載のシステム。
【請求項１０】
少なくとも1つのCPU温度センサおよび少なくとも1つのGPU温度センサのうちの1つまたは複数から温度データを受信するための手段と、
前記GPUおよび前記CPUのうちの1つまたは複数と関連付けられる静止状態供給電流リーク(IDDQ)データを受信するための手段と
をさらに含み、
前記GPU DCVSレベルと前記CPU DCVSレベルの前記最適な組合せが、前記CPUおよびGPUアクティビティデータ、ならびに前記温度データおよび前記IDDQデータのうちの1つまたは複数に基づいて選択される、請求項7に記載のシステム。
【請求項１１】
前記グラフィックスフレーム処理が、CPU/GPUシリアルワークロードを含み、前記GPU DCVSレベルと前記CPU DCVSレベルの前記最適な組合せが、フレームデッドラインを満たしながら、前記CPU/GPUシリアルワークロード中の前記CPUと前記GPUの前記合わせた電力消費を最小にするCPU/GPU周波数空間における動作点を含む、請求項7に記載のシステム。
【請求項１２】
前記グラフィックスフレーム処理が、CPU/GPU並列ワークロードを含み、
前記並列ワークロードのための前記CPUおよび前記GPUの前記合わせた電力消費を最小にするCPU DCVSレベルとGPU DCVSレベルの前記決定された最適な組合せが、さらに共通ハードウェアリソースの処理のためのアイドル時間を増やし、
前記システムは、ディスプレイドライバからの垂直同期信号に従って、前記CPU/GPU並列ワークロードおよび前記共通ハードウェアリソースを同期するステップをさらに含む、請求項7に記載のシステム。
【請求項１３】
実行時に、コンピュータに請求項1〜6のいずれか一項に記載の方法を実行させる命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックスフレーム処理において電力消費を低減させるためのＣＰＵ／ＧＰＵ  ＤＣＶＳ相互最適化に関する。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(たとえば、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、および携帯ゲーム機)は、まずます拡大する数々の機能およびサービスを提供し続け、ユーザに、情報、リソース、および通信へのかつてないレベルのアクセスを与えている。これらのサービス拡張とペースを合わせるために、そのようなデバイスは、より強力、より複雑になっている。ポータブルコンピューティングデバイスは現在、一般的にシステムオンチップ(SoC:system-on-chip)および/または単一の基板に組み込まれた複数のマイクロプロセッサコア(たとえば、中央処理装置(CPU)、グラフィックス処理装置(GPU)など)を含み、ユーザが複雑な、電力多消費の(power intensive)ソフトウェアアプリケーションを実行することを可能にする。しかしながら、性能および機能の要求の増大により、バッテリ寿命および電力消費を管理するための重要な設計および運用上の課題がもたらされる。
【０００３】
マルチプロセッサデバイスの電力消費を管理するための既存の方法は、動的クロックおよび電圧スケーリング(DCVS:dynamic clock and voltage scaling)技法を含むことができる。DCVSは、所望の性能および/または電力効率特性を生じるために、プロセッサ、ハードウェアデバイスなどに適用される周波数および/または電圧を選択的に調整することを含む。従来のDCVSソリューションは、いくつかの性能問題を示し、マルチコアプロセッサシステムの各コアについて周波数/電圧を正しくスケーリングする効果的なDCVS方法を実施することが、重要および困難な設計基準である。たとえば、マルチプロセッサシステム(たとえば、CPUと、GPUとを備えるシステム)のためのDCVS技法は、各プロセッサが別個のDCVSモジュール/プロセスを含む、および/または他のプロセッサから独立したプロセッサ周波数/電圧を調整することを必要とする。さらに、グラフィックスフレーム処理を実行するとき、別個のCPUおよび/またはGPU DCVSアルゴリズムは、電力効率最適化を考慮せずにフレーム処理デッドラインによって提示される制約内で性能を最適化するように設計される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、当技術分野では、マルチプロセッサシステムにおいて電力効率のためにDCVSを最適化するための改善されたシステムおよび方法が依然として必要とされている。
【課題を解決するための手段】
【０００５】
グラフィックスフレーム処理における電力消費を最小にするシステム、方法、およびコンピュータプログラムを開示する。1つのそのような方法は、中央処理装置(CPU)およびグラフィックス処理装置(GPU)によって協働的に実行されるグラフィックスフレーム処理を開始するステップと、CPUアクティビティデータおよびGPUアクティビティデータを受信するステップと、GPUおよびCPUのために利用可能な動的クロックおよび電圧/周波数スケーリング(DCVS)レベルのセットを決定するステップと、CPUおよびGPUアクティビティデータに基づいて、利用可能なDCVSレベルのセットから、グラフィックスフレーム処理中にCPUとGPUの合わせた電力消費を最小にする、GPU DCVSレベルとCPU DCVSレベルの最適な組合せを選択するステップとを含む。
【０００６】
別の実施形態は、グラフィックスフレーム処理における電力消費を最小にするためのシステムを備える。1つのそのようなシステムは、中央処理装置(CPU)と、グラフィックス処理装置(GPU)と、GPUおよびCPUと通信している動的クロック電圧およびスケーリング(DCVS)コントローラとを含んだシステムオンチップ(SoC)を備える。CPU/GPU DCVS相互最適化モジュールは、CPUおよびGPUアクティビティデータに基づいて、DCVSコントローラのためのGPU DCVSレベルとCPU DCVSレベルの最適な組合せを決定するように構成される。GPU DCVSレベルとCPU DCVSレベルの最適な組合せは、グラフィックスフレーム処理中のCPUとGPUの合わせた電力消費を最小にするように選択される。
【０００７】
図の中では、別段に示されない限り、様々な図の全体を通して、同様の参照番号は同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図に存在する2つの同様の部分または要素を区別する場合がある。ある参照番号が、すべての図にその同じ参照番号を有するすべての部分を包含することが意図されている場合、参照番号に対する文字指定が省略される場合がある。
【図面の簡単な説明】
【０００８】
【図１】グラフィックスフレーム処理において、中央処理装置(CPU)およびグラフィックス処理装置(GPU)動的クロックおよび電圧/周波数スケーリング(DCVS)を相互最適化するためのシステムの一実施形態のブロック図である。
【図２】検出されたグラフィックスワークロードタイプによりDCVS相互最適化アルゴリズムを選択するための、図1のシステムで実施される方法の一実施形態のフローチャートである。
【図３】図1のシステムにおけるCPU/GPU DCVS相互最適化モジュールに対する例示的なデータ入力および出力を示すブロック図である。
【図４】グラフィックスフレーム処理中の電力消費を最小にするためにCPUおよびGPU DCVSを相互最適化するための、図1のシステムで実施される方法の一実施形態を示すフローチャートである。
【図５ａ】CPU/GPUシリアルグラフィックスワークロードのためのCPU/GPU DCVS相互最適化方法の一実施形態を示すタイミング図である。
【図５ｂ】CPU/GPUシリアルグラフィックスワークロードのためのCPU/GPU DCVS相互最適化方法の一実施形態を示すタイミング図である。
【図５ｃ】CPU/GPUシリアルグラフィックスワークロードのためのCPU/GPU DCVS相互最適化方法の一実施形態を示すタイミング図である。
【図６】第1のCPU/GPU温度におけるグラフィックスフレーム処理中の合わせた電力消費が最小となるようにGPUおよびCPU DCVSレベルを相互最適化するための例示的なCPU/GPU周波数空間を示すデータ表である。
【図７】第2のCPU/GPU温度についての図6のデータ表を示す図である。
【図８】第3のCPU/GPU温度についての図6のデータ表を示す図である。
【図９】勾配降下探索方法を実施するCPU/GPU DCVS相互最適化アルゴリズムの一実施形態を示す図である。
【図１０】CPU/GPU並列グラフィックスワークロードのためにCPUおよびGPU DCVSレベルを相互最適化するための、図1のシステムで実施される方法の一実施形態を示すフローチャートである。
【図１１ａ】CPU/GPU並列グラフィックスワークロードのためのCPU/GPU DCVS相互最適化方法の一実施形態を示すタイミング図である。
【図１１ｂ】CPU/GPU並列グラフィックスワークロードのためのCPU/GPU DCVS相互最適化方法の一実施形態を示すタイミング図である。
【図１２】図1のシステムを備える携帯コンピュータデバイスの一実施形態のブロック図である。
【発明を実施するための形態】
【０００９】
本明細書で使用する「例示的(exemplary)」という言葉は、「例、実例、または図として機能する」ことを意味する。「例示的」と本明細書で説明する態様は、他の態様より好ましい、または有利であるものとして必ずしも解釈されない。
【００１０】
この説明では、「アプリケーション」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含むこともできる。加えて、本明細書において参照される「アプリケーション」は、開くことが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルを含む場合もある。
【００１１】
「コンテンツ」という用語はまた、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能コンテンツを有するファイルを含む場合もある。加えて、本明細書において参照される「コンテンツ」は、開かれることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、実際には実行可能ではないファイルを含む場合もある。
【００１２】
この説明で使用されるとき、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連エンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであってよい。例として、コンピューティングデバイス上で実行されているアプリケーションと、コンピューティングデバイスの両方は、構成要素であってよい。1つまたは複数の構成要素は、プロセス内および/または実行スレッド内に存在してよく、構成要素は1つのコンピュータ上に局在化されてよく、かつ/または2つ以上のコンピュータ間で分散されてもよい。加えて、これらの構成要素は、その上に記憶された様々なデータ構造を有する様々なコンピュータ可読媒体から実行されてよい。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システムの中の別の構成要素と対話する、および/または、信号によってインターネットなどのネットワークにわたって他のシステムと対話する、1つの構成要素からのデータ)を有する信号などに従って、ローカルプロセスおよび/またはリモートプロセスによって通信してよい。
【００１３】
この説明において、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は、互換的に使用される。第3世代(「3G」)ワイヤレス技術および第4世代(「4G」)の出現により、利用可能な帯域幅が拡大されたので、より多様なワイヤレス機能を備える、より多くのポータブルコンピューティングデバイスが利用可能になっている。したがって、ポータブルコンピューティングデバイスは、セルラー電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、またはワイヤレス接続もしくはワイヤレスリンクを有するハンドヘルドコンピュータを含んでよい。
【００１４】
図1は、グラフィックスフレーム処理中の中央処理装置(CPU)106およびグラフィックス処理装置(GPU)104の動的クロックおよび電圧/周波数スケーリング(DCVS)レベルを相互最適化するための(「CPU/GPU DCVS相互最適化」と呼ばれる)システム100を示す。グラフィックスフレーム処理は、CPU106およびGPU104がフレーム処理を協働的に実行する任意のワークロードを含むことができる。たとえば、グラフィックスフレーム処理は、CPU/GPUシリアルワークロードおよび/またはCPU/GPU並列ワークロードを含むことができる。当技術分野において知られているように、CPU/GPUシリアルワークロードは、各グラフィックスフレームに対してのCPU106およびGPU104による連続処理を含む。各フレームに対して、CPU106は処理を開始し、出力をGPU104へ提供し、GPU104は追加の処理を実行する。GPU104は、たとえば、モバイルディスプレイプロセッサを介して、生じた出力をディスプレイ110に転送する。
【００１５】
CPU/GPU並列ワークロードが、CPU106およびGPU104による並列処理を含むことは、当業者には諒解されよう。CPU106は、フレーム(n)に対しての処理を開始し、生じた出力を、メモリ126のフレームバッファ128に記憶する。次の期間中に、GPU104は、フレームバッファ128に記憶された出力を検索し、フレーム(n)に対しての追加の処理を実行し、一方CPU106は、フレーム(n+1)を処理し、対応する出力をフレームバッファ128に記憶する。プロセスは、各後続のフレームに対して繰り返す。このプロセスは、単一フレームの遅れを生じるが、このプロセスは、CPU/GPU並列処理による性能利点をもたらす。
【００１６】
CPU/GPU DCVS相互最適化という用語は、GPU104とCPU106の合わせた電力消費が最小にされるように、GPU104とCPU106の両方に対してDCVSレベルを共同で最適化することを指すことを諒解されたい。言い換えれば、システム100は、DCVSコントローラ112に対してGPU DCVSレベルとCPU DCVSレベルの最適な組合せを決定し、DCVSコントローラ112は、グラフィックフレーム処理中の最も低いCPUおよびGPU総電力消費をもたらす。
【００１７】
システム100は、パーソナルコンピュータと、ワークステーションと、サーバと、セルラー電話、携帯情報端末(PDA)、携帯ゲーム機、パームトップコンピュータ、またはタブレットコンピュータなどのポータブルコンピューティングデバイス(PCD)とを含む、任意のマルチプロセッサコンピューティングデバイスにおいて実現することができる。一実施形態では、図1に示すシステム構成要素の1つまたは複数は、メモリシステム(たとえば、ダイナミックランダムアクセスメモリ(DRAM))または他のタイプのメモリに結合されたシステムオンチップ(SoC)に組み込まれてもよい。図1に示すように、システム100は、1つまたは複数の処理デバイス、ユニット、またはコア(たとえば、CPU106、GPU104)を備える。システム100は、たとえば、デジタル信号プロセッサ、モバイルディスプレイプロセッサ、ビデオエンコーダなど、任意の他の汎用または特定用途のハードウェアデバイスをさらに備えてよい。
【００１８】
CPU106、GPU104、および任意の他のハードウェアデバイス108は、それぞれのハードウェアドライバ114に接続することができる。当技術分野で知られているように、ハードウェアドライバ114は、それぞれのハードウェアデバイスにソフトウェアインターフェースを提供し、オペレーティングシステムおよび他のコンピュータプログラムが使用されているハードウェアの正確な詳細を知る必要なしにハードウェア機能にアクセスできるようにする。ハードウェアドライバ114は、DCVSコントローラ112に電気的に結合される。DCVSコントローラ112は、CPU106、GPU104、およびハードウェアデバイス108に提供される周波数および/または電圧を制御することによって、システムDCVS技法を実施するように構成される。DCVSコントローラ112は、たとえば、1つまたは複数のクロック116、電力管理集積回路(PMIC)118などへのインターフェースを介してデバイスが動作する周波数および/または電圧を調整することができる。
【００１９】
上述のように、グラフィックスフレーム処理中に、DCVSコントローラ112は、最も低いCPUおよびGPU総電力消費をもたらすようにGPU104とCPU106の両方に対してDCVSレベルを共同で最適化するために、CPU/GPU DCVS相互最適化モジュール102とインターフェースすることができる。図1の実施形態では、以下でより詳細に説明するように、CPU/GPU DCVS相互最適化モジュール102は、グラフィックスワークロードタイプ検出モジュール120を備え、グラフィックスワークロードタイプ検出モジュール120は、グラフィックス負荷がCPU/GPUシリアルワークロードを備えるか、またはCPU/GPU並列ワークロードを備えるかを決定するように構成される。グラフィックスワークロードがシリアル化される場合、CPU/GPU DCVS相互最適化はモジュール122によって実行される。グラフィックスワークロードが並列化される場合、CPU/GPU DCVS相互最適化はモジュール124によって実行される。
【００２０】
図2は、検出されたグラフィックスワークロードタイプにより様々なCPU/GPU DCVS相互最適化アルゴリズムを制御するための、図1のシステムで実施される方法200の一実施形態のフローチャートである。ブロック202において、システム100は、グラフィックスフレーム処理を開始することができる。ブロック204において、グラフィックスワークロードタイプ検出モジュール120は、グラフィックスフレーム処理と関連付けられたワークロードタイプを検出する。一実施形態では、ワークロードタイプ検出は、GPUドライバによって実行されてよい。検出されたワークロードタイプは、CPU/GPUシリアルワークロードまたはCPU/GPU並列ワークロードを含むことができる。ワークロードタイプは、様々な方式で検出されてよい。一実施形態では、GPUドライバは、フレームバッファオブジェクト(FBO)が作成されたかどうかを決定することができる。FBOが作成される場合、システム100は、グラフィックスワークロードタイプはCPU/GPUシリアルであると決定することができる。FBOが作成されない場合、システムは、グラフィックスワークロードタイプはCPU/GPU並列であると決定することができる。
【００２１】
別の検出方法は、プロファイルフレーム処理を調べることを含むことができる。フレーム(n+1)に対しての処理は、フレーム(n)処理が完了した後でようやく始まると決定される場合、システム100は、グラフィックスワークロードタイプはCPU/GPUシリアルであると決定することができる。これは、たとえば、フレーム(n+1)の開始時間がフレーム(n)処理の終了時間にほぼ等しい場合、想定されてよい。しかしながら、フレーム(n+1)に対しての処理が、フレーム(n)処理の状態にかかわらず始まり得る場合、システム100は、グラフィックスワークロードタイプはCPU/GPU並列であると決定することができる。これは、たとえば、フレーム(n+1)の開始時間がフレーム(n)処理の終了時間の前に発生する場合、想定されてよい。
【００２２】
ワークロードタイプは、グラフィックス性能ベンチマークに基づいて決定されてもよい。たとえば、ベンチマークまたは性能および/もしくは使用シナリオのいくつかのタイプは、CPU/GPUシリアルワークロードと関連付けられるべきであり、他のものは、CPU/GPU並列ワークロードと関連付けられるべきであることを、データ表が指定することができる。
【００２３】
ワークロードタイプ検出方法にかかわらず、モジュール120は、どのCPU/GPU DCVS相互最適化アルゴリズムが適用されるべきであるかを制御する(決定ブロック206)。シリアルワークロードについては、CPU/GPUシリアルDCVS相互最適化アルゴリズムのセットのうちの1つが適用されてよい(ブロック208)。並列ワークロードについては、CPU/GPU並列DCVS相互最適化アルゴリズムのセットのうちの1つが適用されてよい(ブロック210)。
【００２４】
図3は、グラフィックスフレーム処理中のCPU106とGPU104の合わせた電力消費を最小にするためにGPUおよびCPU DCVSレベルを共同で最適化するための、CPU/GPU DCVS相互最適化モジュール102によって使用される例示的なデータ入力を示すブロック図である。以下でより詳細に説明するように、様々なタイプのデータは、フレームデッドラインを確認しながら、合わせたCPUおよびGPU電力消費が最も低くなるように、最適動作点(すなわち、GPUおよびCPU DCVSレベル)を決定するために使用される。一実施形態では、CPU/GPU DCVS相互最適化モジュール102は、式1〜式4中の条件によって制約される最適動作点を決定するように構成されてよい。
CPUアクティブ時間+GPUアクティブ<フレーム期間=1/1秒あたりのフレーム数(FPS)  式1
CPU Fmin<CPU周波数<CPU Fmax、  式2
ただし、Fminは最小CPU周波数であり、
Fmaxは最大CPU周波数である
GPU Fmin<GPU周波数<GPU Fmax、  式3
ただし、Fminは最小GPU周波数であり、
Fmaxは最大GPU周波数である
最小総平均SoC電力消費=CPU電力+GPU電力+その他  式4
【００２５】
図3を参照すると、CPU/GPU DCVS相互最適化モジュール102は、CPU106およびGPU104からの(すなわち、それぞれCPUアクティビティデータおよびGPUアクティビティデータと呼ばれる)様々なタイプのアクティビティデータを取得することができる。アクティビティデータは、CPUアクティビティプロファイラ302およびGPUアクティビティプロファイラ304から受信することができる。当技術分野で知られているように、アクティビティプロファイラ302および304は、たとえば、それぞれのCPUおよびGPUドライバ、カウンタ、レジスタ、他のハードウェアなどから関連データを取得することができる。アクティビティデータは、CPUおよび/またはGPUアクティビティに関係する、以下のまたは他のタイプのデータのうちのいずれかを含んでよい:ワークロード、アクティブ時間、アイドル時間、待機時間など。CPU/GPU DCVS相互最適化モジュール102は、CPU106およびGPU104と関連付けられる可能な低電力モード(CPU低電力モード306およびGPU低電力モード308)を決定することができる。低電力モードは、それぞれのDCVSレベルまたは動作周波数などのリストまたは表を備えることができる。CPU低電力モードは、次の機能、特徴、または変数、すなわちクロックゲーティングモード、低電圧での保持、パワーゲーティングなどのうちのいずれかを含むことができることを諒解されたい。GPU低電力モードは、たとえば、空間ピーク時間ピーク(SPTP)電力低下(power collapse)、GFX電力低下などを含むことができる。
【００２６】
図3にさらに示すように、CPU/GPU DCVS相互最適化は、CPU温度センサ312およびGPU温度センサ310からの温度データ、ならびにCPUおよびGPUと関連付けられる静止状態供給電流(IDDQ)リークデータ(IDDQリークデータ314およびIDDQリークデータ316)を組み込むこともできる。合わせたCPUおよびGPU電力消費を最小にするための最適CPU/GPU動作点は、図3に示すデータの1つまたは複数に基づいて決定することができることは、当業者には諒解されよう。CPU/GPU DCVS相互最適化モジュール102は、最適CPU/GPU動作点をDCVSコントローラ112に提供し、DCVSコントローラ112は、たとえば、クロック116および/またはPMIC118(図1)を介してCPU106およびGPU104を調整する。
【００２７】
図4は、グラフィックスフレーム処理中の電力消費を最小にするためにCPUおよびGPU DCVSを相互最適化するための、システム100で実施される方法400の一実施形態を示すフローチャートである。ブロック402において、GPUおよびCPUアクティビティデータが、たとえば、CPUアクティビティプロファイラ302およびGPUアクティビティプロファイラ304から受信される。CPU/GPU DCVS相互最適化モジュール102は、CPU106およびGPU104のための可能な低電力モード(ブロック404)、および/またはそれぞれのDCVSレベル、動作周波数など(ブロック406)を、または上述の他の場合のように、決定することができる。ブロック408において、CPU/GPU DCVS相互最適化モジュール102は、CPU106およびGPU104のための温度データおよび/またはIDDQリークデータを受信することができる。ブロック402、404、406、および408において受信および/または決定されたデータのうちの1つまたは複数に基づいて、CPU/GPU DCVS相互最適化モジュール102は、グラフィックスワークロードタイプに従って適切な相互最適化アルゴリズムを選択し、グラフィックスフレーム処理中のCPU106とGPU104の合わせた電力消費を最小にするCPU DCVSレベルとGPU DCVSレベルの最適な組合せを決定する(ブロック410)。ブロック412において、最適動作点(たとえば、DCVS設定)がDCVSコントローラ112に送信され、DCVSコントローラ112は、フレームデッドライン(ブロック414)内でグラフィックスワークロードを処理するための、CPU106およびGPU104の周波数および/または電圧への調整を制御する。
【００２８】
図5a〜図5cは、CPU/GPUシリアルグラフィックスワークロードのためのCPU/GPU DCVS相互最適化方法の一実施形態を示すための一連のタイミング図である。図5aおよび図5bは、CPU DCVSおよびGPU DCVSを別個に最適化することによってCPU/GPU総電力消費を最小にするための従来の方法を示す。図5aは、最も低いCPU周波数と、最も低いGPU周波数とを備える第1のシナリオを示す。
【００２９】
図5aに示すように、CPU周波数は800MHzであり、GPU周波数は579MHzである。シリアルワークロードは、ワークロードと関連付けられる最初の3つのフレーム(すなわち、それぞれフレーム500、502、および504として識別されるフレームn、フレーム(n+1)、およびフレーム(n+2))について示されている。参照番号506a1、506a2、および506a3がそれぞれ、それぞれのフレーム500、502、および504におけるCPU処理を示し、参照番号508a1、508a2、および508a3が、GPU処理を示す。図5aに示すように、フレーム500において、GPU処理508a1は、CPU処理506a1の後に行われる。GPU処理508a1が完了するとき、出力はディスプレイ110に提供される。フレーム502において、GPU処理508a2は、CPU処理506a2の後に行われる。GPU処理508a2が完了するとき、出力はディスプレイ110に提供される。フレーム504において、GPU処理508a3は、CPU処理506a3の後に行われる。GPU処理508a3が完了するとき、出力はディスプレイ110に提供される。図5aのシナリオ1についての模擬電力消費データは、総電力消費=CPU(559mW)+GPU(1205mW)=1764mWであることを明示する。
【００３０】
図5bは、最も高いCPU周波数と、最も高いGPU周波数とを備える第2のシナリオを示す。図5bに示すように、CPU周波数は2200MHzであり、GPU周波数は625MHzである。やはり、シリアルワークロードは、最初の3つのフレーム500、502、504について示されている。参照番号506b1、506b2、および506b3がそれぞれ、それぞれのフレーム500、502、および504におけるCPU処理を示し、参照番号508b1、508b2、および508b3が、GPU処理を示す。図5bのシナリオ2についての模擬電力消費データは、総電力消費=CPU(783mW)+GPU(1206mW)=1988mWであることを明示する。図5aとの比較によって、それぞれのブロックの幅は、処理時間の量に比例していることを諒解されたい。(最も低い周波数で処理される)図5a中のブロックと比較すると、図5b中のブロックは、周波数がより高いために、使用する処理時間はより少ない。模擬データは、シナリオ1(図5a)がシナリオ2(図5b)よりも電力消費の最適化に優れていることを示している。
【００３１】
図5cは、システム100の例示的な実装形態におけるシリアルワークロードの同じ3つのフレーム500、502、505を示す。この第3のシナリオでは、CPU周波数およびGPU周波数は、上述のように、共同で最適化される。図5cは、上述のように相互最適化手法が、図5a(すなわち、CPUとGPUの両方の最も低い周波数)および図5b(すなわち、CPUとGPUの両方の最も高い周波数)に示す従来の手法よりも低い総電力消費をもたらすことを示す。図5cの例では、総電力消費は最小にされ、CPU周波数は1000MHzであり、GPU周波数は475MHzである。図5cのシナリオ3についての模擬電力消費データは、総電力消費=CPU(554mW)+GPU(1204mW)=1757mWであることを明示する。シナリオ3(図5c)におけるこの相互最適化手法は、シナリオ1および2(図5aおよび図5b)における従来の方法に比べて最も低い電力消費となる。
【００３２】
図6〜図8は、例示的なシリアルワークロードにおけるGPUおよびCPU DCVSレベルの様々な組合せについて、推定GPUおよびCPU電力消費を示すデータ表を含む。データ表は、合わせたCPU/GPU電力消費が例示的なCPU/GPU周波数空間において非線形の、凸の関係であることを示すことを諒解されたい。各データ表は、周波数およびアクティビティ時間の様々な組合せに従って、推定平均CPUおよびGPU電力を示す。図6は、CPU106およびGPU104の温度が約摂氏55度である第1の例を示す。図7は、CPU106およびGPU104の温度が約摂氏85度である第2の例を示す。図8は、CPU106の温度が約摂氏55度であり、GPU104の温度が約摂氏80度である第3の例を示す。
【００３３】
図6〜図8の各々において、GPU組合せは、各表の左の3列に記載され、CPU組合せは、各表の上部の3行に記載されている。グレーアウトしたセルは、様々な組合せに従って、推定総CPUおよびGPU電力を示す。各表中のブラックアウトしたセルは、合わせたCPUおよびGPU電力消費を最小にするためのCPU/GPU周波数空間における最適動作点を識別する。図6〜図8は、最適動作点がCPUおよびGPU温度変化に応じて変わることを示し、このために図3および図4の方法は、CPUおよびGPUの最適動作点を決定するためにIDDQ(リーク)および温度情報を利用する。
【００３４】
CPU/GPU DCVS相互最適化モジュール102は、任意の望ましい周波数空間内で、上述の入力データのいずれかに基づいて、それぞれのCPUおよびGPU電力を推定するように構成されてよいことを諒解されたい。さらに、様々な最適化アルゴリズムが用いられてよい。図9は、勾配降下探索方法の例示的な実装形態を示す。CPU動作周波数(DVCS)レベルは、垂直方向の破線906によってx軸902に沿って表される。GPU動作周波数(DVCS)レベルは、水平方向の破線908によってy軸904に沿って表される。線908と線906の交点は、CPUおよびGPU DCVSレベルを相互最適化するための利用可能な動作点を定義する。
【００３５】
図9の例では、(黒丸として図示した)動作点910は、CPU106およびGPU104の現在の動作点を表す。最適化アルゴリズムは、より低い電力の動作点があるかどうかを決定するために、隣接したDCVS動作点の電力消費を推定するように構成されてよい。(Xで図示した)動作点912はより低い総電力消費を生じるが、フレームデッドラインを満たさず、そのために考慮に入れられないことが決定されてよい。三角形の境界を示した領域は、フレーム処理デッドラインを満たすCPU/GPU DVCSレベルの組合せを表す。(白丸で図示した)動作点914は、より低い総電力消費を生じ、フレームデッドラインを満たすと決定されてよい。しかしながら、(グレーアウトした丸で図示した)動作点916が、フレームデッドラインを満たすだけでなく、すべての隣接した動作点のうち最も低い総合計CPU/GPU電力消費を生じるので、最適な新しい動作点として識別されてよい。たとえば、分枝限定木探索または任意の他の望ましい方法など、他の最適化方法が実施されてもよいことは、当業者には諒解されよう。
【００３６】
図10は、CPU/GPU並列グラフィックスワークロードのためにCPUおよびGPU DCVSレベルを相互最適化するための、図1のシステムで実施される方法1000の一実施形態を示すフローチャートである。ブロック1002において、CPU/GPU DCVS相互最適化モジュール102は、上述の方法で並列ワークロードを検出する。ブロック1004において、CPU DCVSレベルとGPU DCVSレベルの最適な組合せは、並列ワークロードについてCPU106とGPU104の合わせた電力消費を最小にする入力データ(図3)のいずれかに基づいて決定されてよい。システム100は、共通ハードウェアリソース(ハードウェアデバイス118-図1)のアイドル時間を増やすための適切なDCVSレベルまたは他の動作条件を決定してもよい。図11bに示すように、並列化されたCPU/GPUワークロードと共通ハードウェアリソースのための処理は、ディスプレイ110のディスプレイドライバからの垂直同期(Vsync)信号1109に従って同期されてよい。図11aは、並列ワークロードではなくシリアルワークロードに対して垂直同期が用いられる比較例を示す。(図11bに示すように)相互最適化されたCPU/GPU並列ワークロードで垂直同期を含むことによって、共通ハードウェアリソースのアイドル時間は著しく増え、相互最適化されたCPU/GPU DCVSレベルで共通ハードウェアリソースのはるかに効率的な利用をもたらす可能性があることを諒解されたい。
【００３７】
図11aおよび図11bを参照すると、フレーム1102、1104、1106、および1108中のCPU処理が、参照番号1110a、1110b、1110c、および1110dによって表されている。図11a中のGPU処理(シリアルワークロード)は、参照番号1112a、1112b、1112c、および1112dによって表されている。図11b中のGPU処理(並列ワークロード)は、参照番号1112a、1112b、および1112cによって表され、並列ワークロードに固有の1フレームの遅れを説明している。フレーム1102、1104、1106、および1108中の共通ハードウェアリソースのための処理は、それぞれ参照番号1114a、1114b、1114c、および1114dによって表されている。図11bは、垂直同期をCPU/GPU並列ワークロードと組み合わせることによって、共通ハードウェアリソースのアイドル時間が増える可能性があることを示す(図11b中では図11a中よりも狭い処理ブロックによって示されている)。
【００３８】
上述のように、システム100は任意の望ましいコンピューティングシステムに組み込むことができる。図12は、例示的なポータブルコンピューティングデバイス(PCD)1200に組み込まれたシステム100を示す。システム100のいくつかの構成要素(たとえば、CPU/GPU DCVS相互最適化モジュール102、CPU106、GPU104)はSoC322(図12)に含まれてよいが、他の構成要素(たとえば、メモリ126、ディスプレイ110)はSoC322に結合された外部構成要素であってよいことが容易に諒解されよう。SoC322は、マルチコアCPU1202を含むことができる。マルチコアCPU1202は、第0のコア1210、第1のコア1212、および第Nのコア1214を含むことができる。コアのうちの1つは、GPU104を備え、他のコアのうちの1つまたは複数は、CPU106を備える場合がある。
【００３９】
ディスプレイコントローラ328およびタッチスクリーンコントローラ330は、CPU1202に結合することができる。一方、オンチップシステム322の外部にあるタッチスクリーンディスプレイ1206は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合することができる。
【００４０】
図12は、ビデオエンコーダ334(たとえば位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン方式委員会(NTSC)エンコーダ)が、マルチコアCPU1202に結合されることをさらに示す。さらに、ビデオ増幅器336がビデオエンコーダ334とタッチスクリーンディスプレイ1206とに結合される。また、ビデオポート338がビデオ増幅器336に結合される。図12に示されるように、ユニバーサルシリアルバス(USB)コントローラ340は、マルチコアCPU1202に結合される。また、USBポート342はUSBコントローラ340に結合される。メモリ104および加入者識別モジュール(SIM)カード346も、マルチコアCPU 1202に結合される場合がある。メモリ104は、SoC322に存在するか、またはSoC322に結合される場合がある。メモリ104は、DRAMメモリシステムを備えることができる。
【００４１】
さらに、図12に示されるように、デジタルカメラ348がマルチコアCPU1202に結合される場合がある。例示的な態様において、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
【００４２】
図12にさらに示されるように、ステレオオーディオコーダ-デコーダ(コーデック)350が、マルチコアCPU1202に結合されてよい。さらに、オーディオ増幅器352が、ステレオオーディオコーデック350に結合される場合がある。例示的な態様では、第1のステレオスピーカ354と第2のステレオスピーカ356とがオーディオ増幅器352に結合される。図12は、マイクロフォン増幅器358もステレオオーディオコーデック350に結合される場合があることを示す。加えて、マイクロフォン360が、マイクロフォン増幅器358に結合されてよい。特定の態様では、周波数変調(FM)無線チューナ362をステレオオーディオコーデック350に結合することができる。また、FMアンテナ364が、FM無線チューナ362に結合される。さらに、ステレオヘッドフォン366が、ステレオオーディオコーデック350に結合されてよい。
【００４３】
図12は、無線周波数(RF)トランシーバ368がマルチコアCPU1202に結合される場合があることをさらに示す。RFスイッチ370が、RFトランシーバ368およびRFアンテナ372に結合される場合がある。キーパッド204が、マルチコアCPU1202に結合される場合がある。また、マイクロフォンを備えたモノヘッドセット376が、マルチコアCPU1202に結合される場合がある。さらに、バイブレータデバイス378がマルチコアCPU1202に結合される場合がある。
【００４４】
図12はまた、電源380がSoC322に結合される場合があることを示す。特定の態様では、電源380は、電力を必要とするPCD1200の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリ、または交流(AC)電源に接続されたAC/DC変換器から得られるDC電源である。
【００４５】
図12は、PCD1200が、データネットワーク(たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワーク)にアクセスするために使用される場合があるネットワークカード388も含む場合があることをさらに示す。ネットワークカード388は、ブルートゥース(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、テレビジョン/ケーブル/衛星チューナ、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード388は、チップに組み込まれることがある(すなわち、ネットワークカード388は、チップ内のフルソリューションとすることができ、別個のネットワークカード388でなくてもよい)。
【００４６】
図12に示されるように、タッチスクリーンディスプレイ1206、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378、および電源380は、SoC322の外部にあってもよい。
【００４７】
本明細書において説明される方法ステップのうちの1つまたは複数は、上記のモジュールなどのコンピュータプログラム命令としてメモリに記憶される場合があることを理解されたい。これらの命令は、本明細書において説明された方法を実行するために、対応するモジュールと組み合わせてまたは協働して、任意の適切なプロセッサによって実行される場合がある。
【００４８】
本明細書において説明されているプロセスまたはプロセスフローにおける特定のステップは、当然、本発明を説明したように機能させるために他のステップに先行している。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合、本発明は、説明されているステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行される場合があるか、後に実行される場合があるか、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップは、省略される場合があるか、または実行されない場合がある。さらに、「後に」、「次いで」、「次に」などの言葉は、ステップの順序を限定することを意図していない。これらの言葉は単に、例示的な方法の説明を通して読者を導くために使用される。
【００４９】
さらに、プログラミングに関する当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、難なく、開示した発明を実装するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を特定することができる。
【００５０】
したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示は、本発明をどのように製作および使用するのかを十分に理解するために必要であるとは見なされない。特許請求されるコンピュータ実施プロセスの発明性のある機能は、上記の説明において、かつ様々なプロセスフローを示す場合がある図面とともに、より詳細に説明される。
【００５１】
1つまたは複数の例示的な態様では、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装することができる。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶される場合があるか、またはコンピュータ可読媒体上に送信される場合がある。コンピュータ可読媒体は、コンピュータ記憶媒体と、コンピュータプログラムの1つの場所から別の場所への転送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体は、コンピュータによってアクセスされる場合がある任意の利用可能な媒体であってもよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、NANDフラッシュ、NORフラッシュ、M-RAM、P-RAM、R-RAM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用され、コンピュータによってアクセスされてよい任意の他の媒体を備えてよい。
【００５２】
また、どのような接続も厳密にはコンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(「DSL」)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【００５３】
ディスク(disk)およびディスク(disc)は、本明細書において使用されるときに、コンパクトディスク(disc)(「CD」)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記のものの組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００５４】
本発明の趣旨および範囲から逸脱することなく、本発明が関係する代替的な実施形態が、当業者には明らかになるであろう。したがって、選択された態様が図示され詳細に説明されてきたが、以下の特許請求の範囲によって規定されるように、本発明の趣旨および範囲から逸脱することなく、態様において種々の置換および改変が行われる場合があることは理解されよう。
【符号の説明】
【００５５】
100  システム
102  CPU/GPU DCVS相互最適化モジュール
104  GPU
106  CPU
108  HWデバイス
110  ディスプレイ
112  DCVSコントローラ
114  ハードウェアドライバ
116  クロック
118  PMIC
120  グラフィックスワークロードタイプ検出モジュール
122  CPU/GPUシリアルワークロード相互最適化モジュール
124  CPU/GPU並列ワークロード相互最適化モジュール
126  メモリ
128  フレームバッファ
302  CPUアクティビティプロファイラ
304  GPUアクティビティプロファイラ
306  CPU低電力モード
308  GPU低電力モード
310  GPU温度センサ
312  CPU温度センサ
314  静止状態供給電流(IDDQ)リークデータ
316  IDDQリークデータ
322  SoC
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  ユニバーサルシリアルバス(USB)コントローラ
342  USBポート
346  加入者識別モジュール(SIM)カード
348  デジタルカメラ
350  ステレオ/オーディオコーデック
352  オーディオ増幅器
354  ステレオスピーカ
356  ステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  FMチューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  無線周波数(RF)トランシーバ
370  RFスイッチ
372  RFアンテナ
374  キーパッド
376  モノヘッドセット/マイク
378  バイブレータ
380  電源
388  ネットワークカード
1200  携帯コンピューティングデバイス(PCD)
1202  マルチコアCPU
1206  ディスプレイ/タッチスクリーン
1210  第0コア
1212  第1のコア
1214  第Nのコア
【図１】
0006412162.tif 000002
【図２】
0006412162.tif 000003
【図３】
0006412162.tif 000004
【図４】
0006412162.tif 000005
【図５ａ】
0006412162.tif 000006
【図５ｂ】
0006412162.tif 000007
【図５ｃ】
0006412162.tif 000008
【図６】
0006412162.tif 000009
【図７】
0006412162.tif 000010
【図８】
0006412162.tif 000011
【図９】
0006412162.tif 000012
【図１０】
0006412162.tif 000013
【図１１ａ】
0006412162.tif 000014
【図１１ｂ】
0006412162.tif 000015
【図１２】
0006412162.tif 000016