(57)【要約】  マルチプレクサが、検知回路からの複数の検知出力のうちの1つを選択する。検知回路の各々は、サブシステム内のプロセッサに電力を供給する電圧調整器のうちの対応する1つに位置する。電圧調整器のうちの対応する1つは、プロセッサのうちの1つに関連付けられている。アナログデジタル変換器が、複数の検知出力のうちの選択された1つを、電圧調整器のうちの対応する1つに関連付けられたプロセッサのうちの1つのエネルギー消費量を表すデジタルパラメータに変換する。エネルギー消費量は、動的に生成されたコードをディスパッチするために使用される。
2015505412.tif 000002
【特許請求の範囲】
【請求項１】
検知回路からの複数の検知出力のうちの1つを選択するための、サブシステム内のプロセッサに電力を供給する複数の電圧調整器に結合されたマルチプレクサであって、前記検知回路の各々が、前記プロセッサのうちの1つに関連付けられた前記電圧調整器のうちの対応する1つに位置する、マルチプレクサと、
前記複数の検知出力のうちの前記選択された1つを、前記電圧調整器のうちの前記対応する1つに関連付けられた前記プロセッサのうちの前記1つのエネルギー消費量を表すデジタルパラメータに変換するための、前記マルチプレクサに結合されたアナログデジタル変換器であって、前記エネルギー消費量が、動的に生成されたコードをディスパッチするために使用される、アナログデジタル変換器と
を備える装置。
【請求項２】
前記検知回路の各々が、
前記電圧調整器のうちの前記対応する1つの調整された電圧出力を検知するための電圧検知回路を備え、前記電圧検知回路が、前記複数の検知出力のうちの1つに対応する電圧検知出力を生成する、請求項1に記載の装置。
【請求項３】
前記検知回路の各々が、
前記電圧調整器のうちの前記対応する1つの調整された電流出力を検知するための電流検知回路をさらに備え、前記電流検知回路が、前記複数の検知出力のうちの前記1つに対応する電流検知出力を生成する、請求項2に記載の装置。
【請求項４】
前記電流検知回路が、
前記調整された電圧出力をフィルタリングするためのローパスフィルタと、
インダクタの両端間の電圧降下を検知するための、前記ローパスフィルタに結合されたインダクタ降下センサであって、前記インダクタの両端間の前記検知された電圧降下を、前記電流検知出力に変換するインダクタ降下センサと
を備える、請求項3に記載の装置。
【請求項５】
前記電流検知回路が、オン時間中にドレイン-ソース間電圧を検知するためのパストランジスタを備え、前記パストランジスタが、前記検知されたドレイン-ソース間電圧から前記電流検知出力を生成する、請求項3に記載の装置。
【請求項６】
前記検知回路が部分電流ミラーを備える、請求項3に記載の装置。
【請求項７】
前記プロセッサのうちの前記1つの前記エネルギー消費量を取得するためのコントローラをさらに備え、前記エネルギー消費量が、最適性基準に従って、前記動的に生成されたコードを前記プロセッサに割り当てるために使用される、請求項1に記載の装置。
【請求項８】
検知回路からの複数の検知出力のうちの1つを選択するステップであって、前記検知回路の各々が、サブシステム内のプロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置し、前記複数の電圧調整器のうちの前記対応する1つが、前記プロセッサのうちの1つに関連付けられている、ステップと、
前記複数の検知出力のうちの前記選択された1つを、前記電圧調整器のうちの前記対応する1つに関連付けられた前記プロセッサのうちの前記1つのエネルギー消費量を表すデジタルパラメータに変換するステップであって、前記エネルギー消費量が、動的に生成されたコードをディスパッチするために使用される、ステップと
を含む方法。
【請求項９】
選択するステップが、
前記電圧調整器のうちの前記対応する1つの調整された電圧出力を検知するステップと、
前記複数の検知出力のうちの前記1つに対応する電圧検知出力を生成するステップと
を含む、請求項8に記載の方法。
【請求項１０】
選択するステップが、
前記電圧調整器のうちの前記対応する1つの調整された電流出力を検知するステップと、
前記複数の検知出力のうちの前記1つに対応する電流検知出力を生成するステップと
をさらに含む、請求項9に記載の方法。
【請求項１１】
前記調整された電流出力を検知するステップが、
前記調整された電圧出力をフィルタリングするステップと、
インダクタの両端間の電圧降下を検知するステップと、
前記インダクタの両端間の前記検知された電圧降下を、前記電流検知出力に変換するステップと
を含む、請求項10に記載の方法。
【請求項１２】
前記調整された電流出力を検知するステップが、
オン時間中にドレイン-ソース間電圧を検知するステップと、
前記検知されたドレイン-ソース間電圧から前記電流検知出力を生成するステップと
を含む、請求項10に記載の方法。
【請求項１３】
前記調整された電流出力を検知するステップが、部分電流をミラーするステップを含む、請求項10に記載の方法。
【請求項１４】
前記プロセッサのうちの前記1つの前記エネルギー消費量を取得するステップと、
前記エネルギー消費量に基づいて、最適性基準に従って、前記動的に生成されたコードを前記プロセッサに割り当てるステップと
をさらに含む、請求項8に記載の方法。
【請求項１５】
動的に生成されたコードの実行中に、マルチプロセッササブシステム内のプロセッサのうちの1つのエネルギー消費量を取得するステップと、
前記エネルギー消費量に基づいて、最適性基準に従って、前記動的に生成されたコードを前記プロセッサに割り当てるステップと
を含む方法。
【請求項１６】
取得するステップが、
検知回路からの複数の検知出力のうちの1つを選択するステップであって、前記検知回路の各々が、前記プロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置し、前記複数の電圧調整器のうちの前記対応する1つが、前記プロセッサのうちの1つに関連付けられている、ステップと、
前記複数の検知出力のうちの前記選択された1つを、前記プロセッサのうちの前記1つのエネルギー消費量を表すデジタルパラメータに変換するステップと
を含む、請求項15に記載の方法。
【請求項１７】
データを含むマシンアクセス可能記憶媒体であって、前記データは、マシンによってアクセスされたとき、前記マシンに、
動的に生成されたコードの実行中に、マルチプロセッササブシステム内のプロセッサのうちの1つのエネルギー消費量を取得する動作と、
前記エネルギー消費量に基づいて、最適性基準に従って、前記動的に生成されたコードを前記プロセッサに割り当てる動作と
を含む動作を実行させる、マシンアクセス可能記憶媒体。
【請求項１８】
前記マシンに取得する動作を実行させる前記データは、前記マシンによってアクセスされたとき、前記マシンに、
検知回路からの複数の検知出力のうちの1つを選択する動作であって、前記検知回路の各々が、前記プロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置し、前記複数の電圧調整器のうちの前記対応する1つが、前記プロセッサのうちの1つに関連付けられている、動作と、
前記複数の検知出力のうちの前記選択された1つを、前記プロセッサのうちの前記1つの前記エネルギー消費量を表すデジタルパラメータに変換する動作と
を含む動作を実行させるデータを含む、請求項17に記載のマシンアクセス可能記憶媒体。
【請求項１９】
検知回路からの複数の検知出力のうちの1つを選択するための手段であって、前記検知回路の各々が、サブシステム内のプロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置し、前記複数の電圧調整器のうちの前記対応する1つが、前記プロセッサのうちの1つに関連付けられている、手段と、
前記複数の検知出力のうちの前記選択された1つを、前記電圧調整器のうちの前記対応する1つに関連付けられた前記プロセッサのうちの前記1つのエネルギー消費量を表すデジタルパラメータに変換する手段であって、前記エネルギー消費量が、動的に生成されたコードをディスパッチするために使用される、手段と
を備える装置。
【請求項２０】
選択するための前記手段が、
前記電圧調整器のうちの前記対応する1つの調整された電圧出力を検知するための手段と、
前記複数の検知出力のうちの前記1つに対応する電圧検知出力を生成するための手段と、
を備える、請求項19に記載の装置。
【請求項２１】
選択するための前記手段が、
前記電圧調整器のうちの前記対応する1つの調整された電流出力を検知するための手段と、
前記複数の検知出力のうちの前記1つに対応する電流検知出力を生成するための手段と、
をさらに備える、請求項20に記載の装置。
【請求項２２】
前記調整された電流出力を検知するための前記手段が、
前記調整された電圧出力をフィルタリングするための手段と、
インダクタの両端間の電圧降下を検知するための手段と、
前記インダクタの両端間の前記検知された電圧降下を、前記電流検知出力に変換するための手段と
を備える、請求項21に記載の装置。
【請求項２３】
前記調整された電流出力を検知するための前記手段が、
オン時間中にドレイン-ソース間電圧を検知するための手段と、
前記検知されたドレイン-ソース間電圧から前記電流検知出力を生成するための手段と
を備える、請求項21に記載の装置。
【請求項２４】
前記調整された電流出力を検知するための前記手段が、部分電流をミラーするための手段を備える、請求項21に記載の装置。
【請求項２５】
前記プロセッサのうちの前記1つの前記エネルギー消費量を取得するための手段と、
前記エネルギー消費量に基づいて、最適性基準に従って、前記動的に生成されたコードを前記プロセッサに割り当てるための手段と
をさらに備える、請求項19に記載の装置。
【請求項２６】
動的に生成されたコードの実行中に、マルチプロセッササブシステム内のプロセッサのうちの1つのエネルギー消費量を取得するための手段と、
前記エネルギー消費量に基づいて、最適性基準に従って、前記動的に生成されたコードを前記プロセッサに割り当てるための手段と
を備える装置。
【請求項２７】
取得するための前記手段が、
検知回路からの複数の検知出力のうちの1つを選択するための手段であって、前記検知回路の各々が、前記プロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置し、前記複数の電圧調整器のうちの前記対応する1つが、前記プロセッサのうちの1つに関連付けられている、手段と、
前記複数の検知出力のうちの前記選択された1つを、前記プロセッサのうちの前記1つの前記エネルギー消費量を表すデジタルパラメータに変換するための手段と
を備える、請求項26に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、コード割当ての分野を対象とし、より詳細にはコードディスパッチを対象とする。
【背景技術】
【０００２】
近年、マルチプロセッサ環境を対象とした移植可能コードの技術は、機能が向上して普及してきている。コード移植性の例には、仮想マシン、動的バイナリトランスレータ、およびマルチプロセッサ言語が含まれる。様々な技法の中でも、ソフトウェア実行環境におけるコードの割当ては、設計者にとって難題となっている。この問題は、主にシステムオンチップ(SoC)アーキテクチャ上の複数のプロセッサの存在のため難しいものとなっている。通常、複数のプロセッサが、システムに様々な機能を提供するために特定の機能または特殊機能のセットを実行するように最適に設計されたアーキテクチャを有する。たとえば、モバイルデバイスが、ゲームアプリケーションをサポートするためのグラフィック機能、ビデオまたは画像を表示するためのイメージング機能、音楽または音声処理を提供するためのオーディオ機能などを含むことができる。明確な要件を有する十分に定義されたアプリケーションの場合、実行のために適切なプロセッサを選択することは比較的難しくない。しかしながら、様々なアーキテクチャを包含するアプリケーションの特性が存在する場合、実行のために適切なプロセッサを決定するのが困難なときがある。この問題は、動的に生成されるコードを有するリアルタイムアプリケーションでは特に厄介である。多くの高度なプラットフォーム、特にモバイルデバイスでは、様々なプロセッサが使用可能であるため、プロセッサのエネルギー消費量を最小限に抑えながら、動的に生成されるコードをマルチプロセッサ環境における適切なプロセッサに効率的にディスパッチするという困難な設計上の課題がもたらされている。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の例示的な実施形態は、効率的なコードディスパッチのためのシステムおよび方法を対象とする。マルチプレクサが、検知回路からの複数の検知出力のうちの1つを選択する。検知回路の各々は、サブシステム内のプロセッサに電力を供給する電圧調整器のうちの対応する1つに位置する。電圧調整器のうちの対応する1つは、プロセッサのうちの1つに関連付けられている。アナログデジタル変換器が、複数の検知出力のうちの選択された1つを、電圧調整器のうちの対応する1つに関連付けられたプロセッサのうちの1つのエネルギー消費量を表すデジタルパラメータに変換する。エネルギー消費量は、動的に生成されたコードをディスパッチするために使用される。
【０００４】
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定ではなく、実施形態の例示のためのみに提供される。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施形態が実施され得る環境のブロック図である。
【図２】一実施形態によるサブシステムを示す図である。
【図３】一実施形態による検知回路を示す図である。
【図４】一実施形態によるコントローラを示す図である。
【図５】一実施形態による効率的なコードディスパッチを行うためのプロセスを示すフローチャートである。
【図６】一実施形態による複数の検知出力のうちの1つを選択するためのプロセスを示すフローチャートである。
【図７】一実施形態による効率的なコードディスパッチを行うためのプロセスを示すフローチャートである。
【図８】一実施形態によるエネルギー消費量の取得を行うためのプロセスを示すフローチャートである。
【図９】一実施形態によるコントローラを示す図である。
【発明を実施するための形態】
【０００６】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様が開示される。本発明の範囲から逸脱することなく、代替の実施形態が考案され得る。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に記載されないか、または省略される。
【０００７】
実施形態のある開示の特徴は、フローチャート、流れ図、構造図またはブロック図として一般に示されるプロセスとして説明され得る。フローチャートは動作を逐次プロセスとして説明し得るが、動作の多くは並行してまたは同時に実行され得る。加えて、動作の順序は並び替えられ得る。プロセスは、その動作が完了したときに終了する。プロセスは、方法、プログラム、手順、または製造もしくは製作方法などに対応し得る。一実施形態は、物理的構造を示す概略図によって説明され得る。概略図は、基本的概念を示すものであり、正確な比率ではスケール変更されないまたは構造を図示しない場合があることは理解されよう。
【０００８】
本発明の実施形態は、モバイルデバイス上の移植可能な動的に生成されるコードに関するパフォーマンスおよびエネルギー消費量に基づいた効率的なコードディスパッチのためのシステムおよび方法を対象とし得る。この技法は、システム内の複数のプロセッサに電力を提供する複数の電圧調整器に組み込まれた統合された動的電力測定能力を実現する。電圧調整器の各々は、検知回路によって強化される。マルチプレクサが、検知回路からの複数の検知出力のうちの1つを選択する。検知回路の各々は、サブシステム内のプロセッサに電力を供給する電圧調整器のうちの対応する1つに位置する。電圧調整器のうちの対応する1つは、プロセッサのうちの1つに関連付けられている。アナログデジタル変換器が、複数の検知出力のうちの選択された1つを、電圧調整器のうちの対応する1つに関連付けられたプロセッサのうちの1つのエネルギー消費量を表すデジタルパラメータに変換する。検知回路によって提供される電圧および/または電流の測定値を使用することによって、動的に生成されたコードを実行するときのプロセッサの各々によるエネルギー消費量が、計算され得る。この情報から、効率的なコードディスパッチのための1つまたは複数の最適性基準を満たすように、コードがプロセッサに割り当てられ得る。
【０００９】
図1は、本発明の一実施形態が実施され得る環境10を示す図である。環境10は、ハードウェア構成要素およびソフトウェア構成要素をともに含むことができる。環境10は、コード20およびプラットフォーム30を含むことができる。環境10は、図1に示す構成要素より多いかまたは少ない構成要素を含んでもよい。
【００１０】
コード20は、アプリケーション、プログラム、命令のセット、またはソフトウェアモジュールとされ得る。それは、適切なインターフェースおよびソフトウェアサポートを有する任意の環境で実行され得るため移植可能であり得る。一実施形態では、コード20は、ネットワーク(たとえば、インターネット)からダウンロード可能なことがある。コード20は、システムユーティリティ、エンターテイメントアプリケーション(たとえば、ゲーム)、メディアアプリケーション(たとえば、オーディオ、ビデオ、イメージング、グラフィックス)、ファイナンスアプリケーション(たとえば、株)、ニュースアプリケーションなどとされ得る。アプリケーションによっては、コード20の実行は、適切なプロセッサによって実行された場合に最適または効率的になり得る。たとえば、メディアアプリケーションは、デジタル信号プロセッサ(DSP)によって最も効率的に実行される可能性があり、ゲームアプリケーションは、グラフィック処理ユニット(GPU)プロセッサによって最も適切に処理される可能性がある。応答時間がユーザの体験または対話と比せられるリアルタイムアプリケーションでは、コード20が適切なプロセッサによって効率的に実行されることが有用である。
【００１１】
プラットフォーム30は、コード20を実行する任意のプラットフォームを表すことができる。それは、モバイルプラットフォーム、デスクトッププラットフォーム、ネットワーク集約プラットフォームなどとされ得る。一実施形態では、プラットフォーム30は、コード20を含む種々のアプリケーションを実行するためにいくつかのプロセッサが使用されるマルチプロセッサプラットフォームである。プラットフォーム30は、インターゲットコンパイラ(in-target compiler)40、動的バイナリトランスレータ45、ディスパッチャ55、N個のプロセッサ60k(k=1,…,N)、N個の電圧調整器70k(k=1,…,N)、および検知出力コレクタ80を含むことができる。プラットフォーム30は、上記の構成要素より多いかまたは少ない構成要素を含んでもよい。
【００１２】
インターゲットコンパイラ40は、コード20をコンパイルする。インターゲットコンパイラ40は、通常、コード20のソースプログラムを実行コードに変換する。動的バイナリトランスレータ45は、インターゲットコンパイラ40によってコンパイルされた実行コードを実行時に基盤アーキテクチャの実行コードに変換するためのプログラムまたはモジュールとされ得る。それが、動的に生成されたコード50を生成する。ディスパッチャ55は、動的に変換された実行コード50を、実行のために割り当てられたプロセッサにディスパッチする。ディスパッチャ55は、検知出力コレクタ80によって提供される結果を使用して、その機能を動的に実行する。
【００１３】
(601:Nとしても示される)プロセッサ60k{k=1,…,N}は、プラットフォーム30によって利用される任意のプロセッサを表すことができる。それらのプロセッサには、汎用中央処理装置(CPU)、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、メディアプロセッサ、ネットワークプロセッサ、ストレージプロセッサ、または、特定の機能に最適化されたアーキテクチャを有する任意のプロセッサが含まれ得る。(701:Nとしても示される)電圧調整器70k{k=1,…,N}は、調整された電力を対応するプロセッサ60k{k=1,…,N}に提供する。一実施形態では、電圧調整器70k{k=1,…,N}の各々は、対応するプロセッサに供給される検知された電圧または電流を提供するための回路内検知回路を組み込んでいる。検知出力コレクタ80は、電圧調整器70k{k=1,…,N}内の検知回路によって提供された検知出力を収集し、この情報をディスパッチャ55に供給する。
【００１４】
図2は、一実施形態によるサブシステム200を示す図である。サブシステム200は、前述のような構成要素を包含することができる。それは、N個の電圧調整器70k{k=1,…,N}、および検知出力コレクタ80を含むことができる。通常、N個の電圧調整器701:Nは、同様または等価な機能を実行する1つまたは複数の同じ構成要素を含むことができる。明瞭にするため、N個の電圧調整器701:Nのうち1つだけを説明し、以下の説明では下付き文字k(ただし、k=1,…,N)を使用する。
【００１５】
電圧調整器70kは、サブシステム200内の対応するプロセッサ60kに電力を供給する。電圧調整器70kは、調整された供給電圧または電力235kを対応するプロセッサ60kに供給する。電圧調整器70kは、インダクタ220kおよびキャパシタ230kを含む外部回路を有することができる。インダクタ220kおよびキャパシタ230kは、出力電圧をフィルタリングするためのフィルタを形成する。インダクタ220kのインダクタンスおよびキャパシタ230kのキャパシタンスの値は、望ましいフィルタリングの量に応じて変わる。電圧調整器70kは、調整器回路212kおよび検知回路214kを備えることができる。調整器回路212kは、一般的な調整器回路または既存の調整器回路を表す。それは、スイッチング電圧調整器またはリニア電圧調整器であってよい。スイッチング電圧調整器は、降圧型(たとえば、バックコンバータ)スイッチング変換器、または昇圧型(たとえば、バックブーストコンバータ)スイッチング変換器とされ得る。検知回路214kは、検知出力218kを検知出力コレクタ80に提供する。(2141:Nとしても示される)検知回路214k{k=1,…,N}の各々は、プロセッサ60k{k=1,…,N}のうちの1つに関連付けられた電圧調整器70k{k=1,…,N}の対応する1つに位置する。検知出力218kは、測定または検知される複数のパラメータを表す検知信号または多重信号を含むことができる。一実施形態では、検知出力218kは、対応するプロセッサ60kに供給される電圧および電流をそれぞれ表す電圧信号および電流信号を含む。検知回路214kは、既存の調整器回路212kに付加されるアドオンまたは追加回路である。検知回路214kは、通常、調整器回路212kの再設計または修正を必要としない。さらに、検知回路214kは、小さいサイズの構成要素によって構築することができる。
【００１６】
検知出力コレクタ80は、(2181:Nとしても示される)検知出力218k{k=1,…,N}を収集し、結果をディスパッチャ55に転送する(図1)。検知出力コレクタ80は、マルチプレクサ250、アナログデジタル変換器(ADC)260、インターフェース論理回路270、およびコントローラ280を備えることができる。検知出力コレクタ80は、上記の構成要素より多いかまたは少ない構成要素を含んでもよい。
【００１７】
マルチプレクサ250は、検知回路214k{k=1,…,N}からの複数の検知出力218k{k=1,…,N}のうちの1つを選択することができる。マルチプレクサ250は、コントローラ280からのセレクタ制御信号に従って検知出力218k{k=1,…,N}のうちの1つをADC260に転送する、アナログデータセレクタまたはデータステアリング回路とすることができる。ADC260は、マルチプレクサ250に結合され、複数の検知出力218k{k=1,…,N}のうちの選択された1つを、電圧調整器70k{k=1,…,N}のうちの対応する1つに関連付けられたプロセッサ60k{k=1,…,N}のうちの1つのエネルギー消費量を表すデジタルパラメータ265に変換する。デジタルパラメータは、選択された検知出力218kの値を表すデジタルワードとすることができる。ワード長は、望ましい精度に応じて決定され得る。たとえば、8ビットから16ビットの範囲とすることができる。インターフェース論理回路270は、他のデバイスに対するバスインターフェースを提供し、このインターフェースには、並直列変換器、レベル変換器、または、コントローラ280ならびに他の通信および処理要件に適合する量にデジタルパラメータを変換する任意の他のインターフェース機能が含まれ得る。インターフェース論理回路270はまた、電圧調整器70k{k=1,…,N}に入力または制御信号を提供して、電圧調整器70k{k=1,…,N}を適切な動作モードに構成することができる。
【００１８】
図3は、一実施形態による、図2に示された検知回路214kを示す図である。検知回路214kは、図2に示された検知回路214k{k=1,…,N}のうち任意のものを表し得る。検知回路214kは、電圧検知回路310および電流検知回路320を備えることができる。検知回路214kは、上記の構成要素より多いかまたは少ない構成要素を含んでもよい。
【００１９】
電圧検知回路310は、インダクタ220kを介して、電圧調整器70k(図2)の調整された電圧出力235を検知することができる。電圧検知回路310は、電圧検知出力318を提供するための固定ゲインまたはプログラマブルゲインを有するゲイン増幅器または緩衝増幅器を備えることができる。
【００２０】
電流検知回路320は、電圧調整器70kの調整された電圧出力235の電流を検知することができる。電流検知回路320は、電流検知出力328を生成することができる。電流検知回路320は、いくつかの方法で実装され得る。スイッチモード電力管理における電流検知の場合、電流検知回路320は、(1)内蔵ローパスフィルタを用いるインダクタ電圧降下検知、(2)外部ローパスフィルタを用いるインダクタ電圧降下検知、または(3)オン時間中のドレイン-ソース間電圧のパストランジスタ(たとえば、電界効果トランジスタ)検知によって実装され得る。リニア低ドロップアウト調整器における電流検知の場合、電流検知回路320は、部分電流ミラー(fractional current mirror)回路によって実装され得る。一実施形態では、電流検知回路320は、ローパスフィルタ322および増幅器324を備えることができる。ローパスフィルタ322は、インダクタ220kの両端間の電圧降下をフィルタリングして、ノイズや電流スパイクのような高周波成分を除去する。ローパスフィルタ322は、電圧調整器70kの内部としてもよいし外部としてもよい。増幅器324は、電流に比例する量を提供するために電圧-電流変換を行う緩衝増幅器とすることができる。
【００２１】
電圧検知出力318および電流検知出力328は、マルチプレクサ250への検知出力218kを形成することができる。要件に応じて、それらの一方または両方が検知出力218kとして使用される。さらなる測定値を提供するために追加の検知回路を利用してもよい。したがって、検知出力218kは、任意の特定の瞬間または所定の時間間隔において、対応するプロセッサ70kによって消費される電力またはエネルギーを表す。
【００２２】
既存の調整器に付加される追加の回路が占める領域は極めて小さくすることが可能である。緩衝増幅器およびADC260は、極めて小さい領域を有するように構築され得る。たとえば、ADC260のサイズは、データ変換のアーキテクチャおよびプロセス技術によっては、1mm2とすることができる。
【００２３】
図4は、一実施形態による、図2に示されたコントローラ280を示す図である。コントローラ280は、専用コントローラとしてもよいし、またはプラットフォーム30で使用される中央処理装置の一部分としてもよい。コントローラ280は、制御およびモニタ機能を実行するための回路および/またはソフトウェアモジュールを含むことができる。コントローラ280は、エネルギー消費量計算器410、コード割当て器420、およびセレクタコントローラ430を備えることができる。コントローラ280は、上記の構成要素より多いかまたは少ない構成要素を含んでもよく、上記の構成要素のいずれも、ハードウェア、ソフトウェア、ファームウェア、または任意のそれらの組合せによって実装され得る。
【００２４】
エネルギー消費量計算器410は、ADC260によって変換されインターフェース論理回路270によって処理された検知出力218kに基づいて、対応するプロセッサ60kによって消費されるエネルギーまたは電力を計算することができ、結果415を出力する。たとえば、エネルギー消費量計算器410は、電圧検知出力318と電流検知出力328との積として電力を計算することができる。エネルギー消費量計算器410は、瞬時電力、または所定の時間間隔において決定される積算または平均電力を計算することができる。エネルギー消費量は、プロセッサ60k{k=1,…,N}による様々なエネルギー消費量の比較が適切に解釈できるように、規格化因子によってさらに規格化され得る。この規格化は、プラットフォーム30の動作モード(たとえば、待機、低電力、完全動作)、動的生成されたコード50のサイズなどの因子を考慮に入れてもよい。
【００２５】
コード割当て器420は、1つまたは複数の最適性基準440を使用して、動的に生成されたコード50を適切なプロセッサ60kに割り当てることができる。最適性基準440は、全体または個別の電力消費量、実行時間、プロセッサに割り振られたメモリ量に基づくことが可能である。最適性基準440は、これらのパフォーマンス因子を表す複数のパラメータの組合せとしてもよい。コード割当て器420は、ある期間にわたるエネルギー消費量の測定値を蓄積することができる。コード割当て器420は、1つのプロセッサまたは2つ以上のプロセッサについての測定値を記憶してもよい。割当て手順は、記憶された情報を使用して最適性基準440を最大にするように実行することができる。割当ての結果として、最適性基準440において、動的に生成されたコード50に最も適したプロセッサが決定される。コード割当て器420は、1つまたは複数の割当て結果をコードディスパッチャ55に転送し、それにより、動的に生成されたコード50を割り当てられたプロセッサにディスパッチすることができる。コード割当て器420の機能の全部または一部は、ディスパッチャ55に組み込まれてよい。
【００２６】
セレクタコントローラ430は制御信号を提供して、マルチプレクサ250が望ましい検知出力を選択するように制御する。コード割当て器420は、ある時間間隔にわたって1つまたは複数の瞬間測定値の検知出力を選択するようにセレクタコントローラ430を制御することができる。したがって、エネルギー消費量は、瞬間エネルギー消費量または平均エネルギー消費量として計算することができる。
【００２７】
図5は、一実施形態による効率的なコードディスパッチを行うためのプロセス500を示すフローチャートである。
【００２８】
プロセス500は、開始後、検知回路からの複数の検知出力のうちの1つを選択する(ブロック510)。検知回路の各々は、サブシステム内のプロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置する。複数の電圧調整器のうちの対応する1つは、プロセッサのうちの1つに関連付けられている。次に、プロセス500は、複数の検知出力のうちの選択された1つを、電圧調整器のうちの対応する1つに関連付けられたプロセッサのうちの1つのエネルギー消費量を表すデジタルパラメータに変換する(ブロック520)。次いで、プロセス500は、プロセッサのうちの1つのエネルギー消費量を取得する(ブロック530)。これは、電力消費量を計算し、計算した電力消費量を規格化因子によって規格化することによって行うことができる。エネルギー消費量は、動的に生成されたコードをディスパッチするために使用される。
【００２９】
次に、プロセス500は、取得する必要がある他のエネルギー消費量が存在するかどうかを決定する(ブロック540)。存在する場合、プロセス500は、ブロック510に戻って、別の検知出力を選択する。そうでない場合、プロセス500は、エネルギー消費量に基づいて、最適性基準に従って、動的に生成されたコードをプロセッサに割り当てる(ブロック550)。次いで、プロセス500は終了する。
【００３０】
図6は、一実施形態による、複数の検知出力のうちの1つを選択する図5に示されたプロセス510を示すフローチャートである。
【００３１】
プロセス510は、開始後、電圧調整器のうちの対応する1つの調整された電圧出力を検知する(ブロック610)。次に、プロセス510は、複数の検知出力のうちの1つに対応する電圧検知出力を生成する(ブロック620)。次いで、プロセス510は、電圧調整器のうちの対応する1つの調整された電圧出力の電流を検知する(ブロック630)。これは、いくつかの方法によって実行され得る。1つの方法は、調整された電圧出力をフィルタリングするステップと、インダクタの両端間の電圧降下を検知するステップと、インダクタの両端間の検知された電圧降下を、電流検知出力に変換するステップとを含む。別の方法は、オン時間中にドレイン-ソース間電圧を検知するステップと、検知されたドレイン-ソース間電圧から電流検知出力を生成するステップとを含む。別の方法は、部分電流をミラーするステップを含む。次に、プロセス510は、複数の検知出力のうちの1つに対応する電流検知出力を生成する(ブロック640)。次いで、プロセス510は終了する。
【００３２】
図7は、一実施形態による効率的なコードディスパッチを行うためのプロセス700を示すフローチャートである。
【００３３】
プロセス700は、開始後、動的に生成されたコードの実行中に、マルチプロセッササブシステム内のプロセッサのうちの1つのエネルギー消費量を取得する(ブロック710)。次に、プロセス700は、取得する必要がある他のエネルギー消費量が存在するかどうかを決定する(ブロック720)。存在する場合、プロセス700は、ブロック710に戻って、別のプロセッサのエネルギー消費量を取得する。そうでない場合、プロセス700は、エネルギー消費量に基づいて、最適性基準に従って、動的に生成されたコードをプロセッサに割り当てる(ブロック730)。次いで、プロセス700は終了する。
【００３４】
図8は、一実施形態による、エネルギー消費量の取得を行う図7に示されたプロセス710を示すフローチャートである。
【００３５】
プロセス710は、開始後、検知回路からの複数の検知出力のうちの1つを選択する(ブロック810)。検知回路の各々は、プロセッサに電力を供給する複数の電圧調整器のうちの対応する1つに位置する。複数の電圧調整器のうちの対応する1つは、プロセッサのうちの1つに関連付けられている。検知回路は、上記で説明したように構築されてよい。次に、プロセス710は、複数の検知出力のうちの選択された1つを、プロセッサのうちの1つのエネルギー消費量を表すデジタルパラメータに変換する(ブロック820)。次いで、プロセス710は終了する。
【００３６】
図9は、一実施形態による、図2に示されたコントローラ280を示す図である。コントローラ280は、プロセッサ910、チップセット920、メモリ930、相互接続940、大容量記憶媒体950、入出力(I/O)インターフェース960を備えることができる。コントローラ280は、上記の構成要素より多いかまたは少ない構成要素を含んでもよい。
【００３７】
プロセッサ910は、ハイパースレッディング、セキュリティ、ネットワーク、デジタルメディア技術を使用するプロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、組込みプロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、スーパースカラコンピュータ、ベクトルプロセッサ、単一命令多重データ(SIMD)コンピュータ、複雑命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)、超長命令語(VLIM)、あるいはハイブリッドアーキテクチャのような任意のタイプのアーキテクチャの中央処理装置を表す。
【００３８】
チップセット920は、メモリ930、大容量記憶媒体950、およびI/Oインターフェース960のようなメモリおよび入出力デバイスの制御および構成を行う。チップセット920は、グラフィックス、メディア、ホスト周辺機器間バスインターフェース、メモリ制御、電力管理などのような複数の機能を統合することができる。それはまた、周辺構成要素相互接続(PCI)バスインターフェース、プロセッサインターフェース、割込みコントローラ、直接メモリアクセス(DMA)コントローラ、電源管理ロジック、タイマ、システム管理バス(SMBus)、ユニバーサルシリアルバス(USB)インターフェース、大容量記憶インターフェース、低ピンカウント(LPC)インターフェース、ワイヤレス相互接続、直接メディアインターフェース(DMI)など、いくつかのインターフェースおよび/または入出力機能を含むことができる。
【００３９】
メモリ930は、コードおよびデータを記憶する。メモリ930は通常、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、またはリフレッシュされる必要のないものを含む任意の他のタイプのメモリによって実装される。メモリ930は、上述の動作の全部または一部を行うコード割当て器およびディスパッチャモジュール935を備えることができる。
【００４０】
相互接続940は、周辺デバイスへのインターフェースを提供する。相互接続940は、ポイントツーポイントであっても、複数のデバイスに接続されていてもよい。明瞭にするため、すべての相互接続は図示していない。相互接続940には、周辺構成要素相互接続(PCI)、PCIエクスプレス、ユニバーサルシリアルバス(USB)、小型コンピュータシステムインターフェース(SCSI)、シリアルSCSI、および直接メディアインターフェース(DMI)などのような任意の相互接続またはバスが含まれ得ることが企図される。
【００４１】
大容量記憶媒体950は、コード、プログラム、ファイル、データ、およびアプリケーションなどのアーカイブ情報を記憶するための大容量記憶デバイスに対するインターフェースを含む。大容量記憶インターフェースには、SCSI、シリアルSCSI、アドバンストテクノロジアタッチメント(ATA)(パラレルおよび/またはシリアル)、統合ドライブエレクトロニクス(IDE:Integrated Drive Electronics)、拡張IDE、ATAパケットインターフェース(ATAPI)などが含まれ得る。大容量記憶デバイスには、コンパクトディスク(CD)、読取り専用メモリ(ROM)、デジタルビデオ/多用途ディスク(DVD)、フロッピー(登録商標)ドライブ、ハードドライブ、テープドライブ、および任意の他の磁気または光記憶デバイスが含まれ得る。大容量記憶デバイスは、マシンアクセス可能媒体を読み取るための機構を提供する。一実施形態では、大容量記憶媒体950は、フラッシュメモリを含むことができる。
【００４２】
I/Oインターフェース960は、パネルディスプレイや入力エントリデバイスのようなI/Oデバイスに対してインターフェースを提供する。I/Oインターフェース960は、グラフィックスディスプレイのタッチ画面、キーパッド、またはカメラ、ブルートゥースインターフェースなどのような他の通信デバイスもしくはイメージングデバイスに対してインターフェースを提供することができる。
【００４３】
「例示的な」という言葉は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。「例示的な」として本明細書で説明される任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。「プロセッサ可読またはアクセス可能媒体」あるいは「マシン可読またはアクセス可能媒体」は、情報を記憶または転送することができる任意の媒体を含むことができる。プロセッサ可読またはマシンアクセス可能記憶媒体の例には、電子回路、半導体メモリデバイス、読取り専用メモリ(ROM)、フラッシュメモリ、消去可能プログラマブルROM(EPROM)、フロッピー(登録商標)ディスケット、コンパクトディスク(CD)ROM、光ディスク、ハードディスクなどが含まれる。マシンアクセス可能記憶媒体は、製造品に具現化され得る。マシンアクセス可能記憶媒体は、マシンによってアクセスされたとき、マシンに、前述の動作またはアクションを実行させる情報またはデータを含むことができる。マシンアクセス可能記憶媒体はまた、組み込まれたプログラムコードまたは1つもしくは複数の命令を含むことができる。プログラムコードは、前述の動作またはアクションを実行するためのマシン可読コードまたは1つもしくは複数の命令を含むことができる。本明細書では、「情報」または「データ」という用語は、マシンに読取り可能なように符号化された任意のタイプの情報を指す。したがって、この用語は、プログラム、コード、データ、ファイルなどを含むことができる。
【００４４】
本明細書で使用される用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定するものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、本明細書で使用される「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことは理解されよう。
【００４５】
さらに、多くの実施形態が、たとえばコンピューティングデバイスの要素によって実行されるべき、一連のアクションに関して説明される。本明細書で説明される様々な動作は、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいは両方の組合せによって実行され得ることを認識されよう。さらに、本明細書で説明するこれらの一連のアクションは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なすことができる。したがって、本発明の様々な態様は、請求する主題の範囲内にすべて入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明される実施形態ごとに、任意のそのような実施形態の対応する形式は、本明細書では、たとえば、説明されるアクションを実行する「ように構成された論理」として説明されることがある。
【００４６】
さらに、実施形態の全部または一部は、特定の特徴、機能によるアプリケーションに応じて、様々な手段によって実装され得る。これらの手段は、ハードウェア、ソフトウェア、またはファームウェア、あるいはこれらの任意の組合せを含むことができる。ハードウェア、ソフトウェア、またはファームウェアは、互いに結合されるいくつかのモジュールを有することができる。ハードウェアモジュールは、機械的、電気的、光学的、電磁気的、または任意の他の物理的接続によって、別のモジュールに結合される。ソフトウェアモジュールは、関数、プロシージャ、メソッド、サブプログラム、またはサブルーチン呼出し、ジャンプ、リンク、パラメータ、変数、および引数受け渡し、関数戻り値などによって、別のモジュールに結合される。ソフトウェアモジュールは、変数、パラメータ、引数、ポインタなどを受け取るために、かつ/または、結果、更新された変数、ポインタなどを生成するもしくは渡すために別のモジュールに結合される。ファームウェアモジュールは、上記のハードウェアおよびソフトウェアの結合方法の任意の組合せによって、別のモジュールに結合される。ハードウェア、ソフトウェア、またはファームウェアモジュールは、別のハードウェア、ソフトウェア、またはファームウェアモジュールのいずれにも結合され得る。モジュールは、プラットフォーム上で実行されているオペレーティングシステムと相互作用するためのソフトウェアドライバまたはインターフェースであってもよい。モジュールは、ハードウェアデバイスに対する構成、設定、初期化、およびデータの送受信を行うためのハードウェアドライバであってもよい。装置は、ハードウェア、ソフトウェア、およびファームウェアモジュールの任意の組合せを含むことができる。
【００４７】
情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００４８】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００４９】
本明細書で開示された実施形態と関連して説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。
【００５０】
したがって、本発明の実施形態は、効率的なコードディスパッチのための方法を具現化するコンピュータ可読媒体を含み得る。したがって、本発明は、示される例に限定されず、本明細書で説明される機能を実行するための任意の手段が、本発明の実施形態に含まれる。
【００５１】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明された本発明の実施形態による方法クレームの機能、ステップおよび/またはアクションは、特定の順序で実行されなくてもよい。さらに、本発明の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００５２】
10  環境
20  コード
30  プラットフォーム
40  インターゲットコンパイラ
45  動的バイナリトランスレータ
50  動的に生成されたコード
55  ディスパッチャ
60k  プロセッサ
70k  電圧調整器
80  検知出力コレクタ
212k  調整器回路
214k  検知回路
218k  検知出力
220k  インダクタ
230k  キャパシタ
235k  調整された電圧出力
250  マルチプレクサ
260  アナログデジタル変換器
265  デジタルパラメータ
270  インターフェース論理回路
280  コントローラ
310  電圧検知回路
318  電圧検知出力
320  電流検知回路
322  ローパスフィルタ
328  電流検知出力
324  増幅器
410  エネルギー消費量計算器
415  結果
420  コード割当て器
430  セレクタコントローラ
440  最適性基準
910  プロセッサ
920  チップセット
930  メモリ
935  コード割当て器およびディスパッチャ
940  相互接続
950  大容量記憶媒体
960  入出力インターフェース
【図１】
2015505412.tif 000003
【図２】
2015505412.tif 000004
【図３】
2015505412.tif 000005
【図４】
2015505412.tif 000006
【図５】
2015505412.tif 000007
【図６】
2015505412.tif 000008
【図７】
2015505412.tif 000009
【図８】
2015505412.tif 000010
【図９】
2015505412.tif 000011
【国際調査報告】
2015505412.tif 000012
2015505412.tif 000013
2015505412.tif 000014