(57)【特許請求の範囲】
【請求項１】
集積回路の動作中に、所定数のサンプリングされた信号の各々に対応するデータを伝達するように構成される、前記集積回路の機能ブロック（１１０）と、
前記所定数のサンプリングされた信号の各々に対応する、予め設定された重み値を記憶するように構成される重みテーブルと、
前記データを受け取るとともに、前記所定数のサンプリングされた信号の各々に対応する重み値に前記重みテーブルからアクセスし、前記所定数のサンプリングされた信号の各々に対する対応する重み値を記憶し、対応する高論理値を有する前記サンプリングされた信号の前記重み値を合計し、前記重み値の合計に基づき電力推定数を決定するように構成される電力モニタ（１３０）と、
電圧及び周波数の調整を前記機能ブロックに伝達し、前記電力推定数に応じて前記機能ブロック内で電力消費挙動を変更するように構成される電力マネージャ（１４０）とを備えたシステムであって、
前記所定数のサンプリングされた信号は、１つ以上のクロックゲータイネーブル信号を含み、
前記重み値は、統計的ランダム処理により近似されるノード容量切り換え挙動を前記機能ブロックが有すると仮定する統計的解析を用いて決定されるシステム。
【請求項２】
前記電力推定数は環境変化とは独立した再現性のある値である、請求項１に記載されたシステム。
【請求項３】
前記重み値は、ポアソン分布を有している統計的ランダム処理により近似されるノード容量切り換え挙動を前記機能ブロックが有すると仮定する統計的解析を用いて決定される、請求項１に記載されたシステム。
【請求項４】
前記重み値の記憶は予め定められた数のクロック周期毎に１回行われる、請求項１に記載されたシステム。
【請求項５】
サンプリング間隔内の所定数のサンプルは前記統計的解析から決定される、請求項４に記載されたシステム。
【請求項６】
前記所定数のサンプリングされた信号は、動作周波数、前記サンプリング間隔、及び前記所定数のサンプルから決定される、請求項５に記載されたシステム。
【請求項７】
前記機能ブロックは１つ以上のユニットを備え、同じ所定数のサンプル及び同じ所定数のサンプリングされた信号に対して、前記１つ以上のユニットの各々は前記機能ブロックよりも低い信頼性レベル及び高い正確性を備えている、請求項５に記載されたシステム。
【請求項８】
所定数のサンプリングされた信号の各々に対応するデータを、集積回路の機能ブロックから前記集積回路の動作中に伝達することと、
前記所定数のサンプリングされた信号の各々に対応する、予め設定された重み値を記憶するように構成される重みテーブルを維持することと、
前記データを受け取るとともに、前記所定数のサンプリングされた信号の各々に対応する重み値に前記重みテーブルからアクセスし、前記所定数のサンプリングされた信号の各々に対する対応する重み値を記憶することと、
対応する高論理値を有する前記サンプリングされた信号の前記重み値を合計することと、
前記重み値の合計に基づき電力推定数を決定することと、
電圧及び周波数の調整を前記機能ブロックに伝達して前記電力推定数に応じて前記機能ブロック内で電力消費挙動を変更することと、を備えた方法であって、
前記所定数のサンプリングされた信号は、１つ以上のクロックゲータイネーブル信号を含み、
前記重み値は、統計的ランダム処理により近似されるノード容量切り換え挙動を前記機能ブロックが有すると仮定する統計的解析を用いて決定される、方法。
【請求項９】
集積回路の機能ブロック（１１０）及び電力マネージャ（１４０）と通信するように構成されるインタフェースと、
所定数のサンプリングされた信号の各々に対応する、予め設定された重み値を記憶するように構成される重みテーブル（５０４）と、
高論理値を有する前記サンプリングされた信号の前記重み値を合計するように構成される重み積算器（５１０）と、
電力マネージャに電力推定数を伝達するように構成されるチェインコントロール（５０２）とを備えた電力モニタ（１３０）であって、
前記所定数のサンプリングされた信号は、前記集積回路の動作中にサンプリングされた１つ以上のクロックゲータイネーブル信号を含み、
前記重み値は、統計的ランダム処理により近似されるノード容量切り換え挙動を前記機能ブロックが有すると仮定する統計的解析を用いて決定され、
前記電力推定数は、前記重み値の合計から変換されたものである、電力モニタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路に関し、より詳細には再現性のある正確なリアルタイム電力推定の効果的な方法に関するものである。
【背景技術】
【０００２】
最新の集積回路（ＩＣ）の電力消費は半導体チップの各世代と共に深刻化する設計問題になってきている。増大したＩＣ電力消費は直接的にシステムの構築価格に影響する。電力消費が増えるのに従って、過剰な熱を除去しＩＣの故障を防ぐために、より大きなファン及びヒートシンクのようなより高価な冷却システムが用いられなければならない。しかし、冷却システムはシステム価格を増大させる。ＩＣ電力消散の制約は、可搬型コンピュータ及び携帯型通信装置だけでなく、多重化プロセッサコア、又はコア、及び各コア内での多重化パイプラインを含んでよい高性能なスーパースカラマイクロプロセッサの問題でもある。
【０００３】
最新の相補型金属酸化物半導体（ＣＭＯＳ）チップのようなＩＣの電力消費は、式αｆＣＶ２に比例する。記号αは切り換え因子(switching factor)、即ちクロック周期の間にノードが充電又は放電する確率である。記号ｆはチップの動作周波数である。記号Ｃはクロック周期内で充電又は放電される等価容量又は切り換え容量である。記号Ｖはチップの動作電圧である。チップの電力消費を低減し且つトランジスタ内の静電界を低減しようとして、電源供給電圧Ｖが減少させられてよい。電源供給電圧の低減はトランジスタを通って流れるであろう電流の量を減少させ従ってトランジスタを通した伝播遅延を増大させるので、電源供給電圧の低減には限界がある。トランジスタをより早い時間でターンオンして性能の維持を支援するためにスレッショルド電圧が低減させられると、トランジスタ漏れ電流が増加する。トランジスタ漏れ電流の増加は電力消費及び論理障害の可能性の両方を増大させる。
【０００４】
コアの各世代でデバイス及び金属経路の幾何学的な寸法が減少している。スーパースカラ設計は、多重化されたパイプライン、大規模なキャッシュ、及びより複雑な論理を伴うダイ上の集積回路の密度を増大させる。従って、クロック周期毎に切り換わることのできるノードの数が著しく増える。動作周波数も各世代と共に増大してきている。チップ内の特定のブロック及びユニットについて、不使用の期間にこれらの領域へのクロックを無効にすることによって、切り換え因子αを減少させることができる。従って、ＩＣの各世代と共に動作電圧及び切り換え因子は減少してきているかもしれないが、ＩＣ電力消費式における他の項は増大しており、電力消費全体の増加を引き起こしている。この電力消費増大の幾つかの解決法は、マイクロアーキテクチャ及び回路レベルの両方の技術を含む。
【０００５】
これらの設計技術はリアルタイムで電力消費を推定する努力に支援されている。例えば、１つ以上のアプリケーションを動作させている間に、コアのリアルタイム電力消費が明らかになっており且つそれが電力マネージャに伝達されていれば、低電力消費期間における性能を高めるために電力マネージャは動作供給電圧、動作周波数又は両方を変更することができ、あるいは高電力消費期間における電力消費を低減することができる。
【０００６】
リアルタイム電力推定は特定のクロック周期の間のダイでの切り換え容量を測定するモニタによって達成することができる。ノード容量Ｃａｃは、切り換えられた、即ちＡＣの容量と、クロスオーバ電流に起因する実効容量の両方からなる。与えられた部分について、動作が温度限界に到達したときに漏れ電流は固定される。この漏れ値は試験の時の測定に基く融合された(fused-in)電力オフセットにより計上することができる。漏れ電流における温度誘発変化を活用する試みは、以下に説明する再現性の理由により奨励されない。従って、チップ電力の正確なリアルタイムの推定値を得るために必要なのは、デジタル的に設定される動作供給電圧、既知の動作周波数、試験の間に見出される融合された漏れ値、並びに特定のクロック周期内で切り換えられる設計上のノードの数及びそのノード容量Ｃａｃの測定である。最後の項Ｃａｃは半導体上で測定する単純な値ではない。
【０００７】
チップ上モニタを用いて切り換えノード容量Ｃａｃを測定することが試みられるかもしれない。モニタはコア内あるいは多重化されたコアを有するプロセッサ内での命令発行率(instruction issue rate)を測定することができる。主要な構成要素、例えば命令発行キュー(queue)、再配列(reorder)バッファ、物理的レジスタファイル、実行ユニット等の挙動、及びそれらそれぞれの相互作用が監視されれば、正確性が高まる。しかし、このタスクを完遂するために何百もの信号をサンプリングすることは、追加的な金属経路、増大した回路、及び付加的な電力消費に関して莫大な経費をもたらす。
【０００８】
また、モニタ及びそれに続く電力マネージャ等の応答メカニズムは決定論的(deterministic)であることが必要である。つまり、モニタ及びメカニズムは、部分部分で、システム毎に、そして動作毎に同一の結果あるいは周波数変化を提供することが必要である。この必要性の理由は、製品システムの１つにおいてプロセッサを用いている相手先ブランドによる製造業者（ＯＥＭｓ）が、顧客に対して性能保証する必要があることである。顧客及びＯＥＭｓは、ベンチマーク及び性能測定を異なる時間に異なる場所で再現する必要がある。もしこの再現を厳しい許容範囲（例えば±１．５％）内で行うことができなければ、モニタ及び応答メカニズムはターンオフされる必要がある。そうなればモニタ及びメカニズムはダイ上の領域を占有するだけで、性能を改善し電力を節約するたに何ら有用な働きをなさない。
【０００９】
温度センサ及び／又は電流計のようなアナログセンサは正確な電力推定を可能にするが、それらは全て環境依存である。製造プロセス、環境温度、電源供給、及び熱除去解決法の品質における変動はアナログセンサの測定値を変化させる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述に鑑みて、ＩＣの正確なデジタルリアルタイム電力推定を提供するための有効な方法及びメカニズムが要望されている。
【課題を解決するための手段】
【００１１】
正確なリアルタイム電力推定のためのシステム及び方法が検討される。
【００１２】
ある実施形態では、機能ブロック、電力モニタ、及び電力マネージャを備えたシステムが提供される。電力マネージャは、電力推定数に応じて、機能ブロック内で電力消費挙動を反転させるために動作電圧及び周波数の調整を機能ブロックに伝達するように構成される。機能ブロックは、所定数のサンプリングされた信号の各々の論理値を記憶し、論理値を電力モニタに伝達するように構成される。電力モニタは、所定数のサンプリングされた信号の各々に対する重み値を記憶し、高論理値の記憶された論理値を有するサンプリングされた信号のみの重み値を合計し、電力推定数を電力マネージャに伝達するように構成され、電力推定数は重み値の合計が形を変えたものである。
【００１３】
本発明の他の側面においては、電力推定数に応じて、電力消費挙動を反転させるために動作電圧及び周波数の調整を伝達する方法が提供される。所定数のサンプリングされた信号の各々に対して論理値が記憶されている。また、所定数のサンプリングされた信号の各々に対して重み値が記憶されている。高論理値の記憶された論理値を有するサンプリングされた信号のみの重み値についての積算が続く。電力推定数は重み値の合計が形を変えたものであり、電力マネージャに伝達される。
【００１４】
本発明の他の側面においては、機能ブロック及び電力マネージャと通信するように構成されるインタフェースを備えた電力モニタが提供される。重みテーブルは、所定数のサンプリングされた信号の各々に対する重み値を記憶する。重み積算器は、高論理値の記憶された論理値を有するサンプリングされた信号のみの重み値を合計する。チェインコントロールは電力マネージャに電力推定数を伝達し、電力推定数は重み値の合計が形を変えたものである。
【００１５】
これらの及び他の実施形態は、以下の説明及び添付の図面を参照することによって理解されるであろう。
【図面の簡単な説明】
【００１６】
【図１】図１は電力管理機能を有するＩＣ、例えばコアの実施形態を示す概略的なブロックダイアグラムである。
【００１７】
【図２Ａ】図２Ａはサンプリング間隔の間にコアで実行されるアプリケーションの実際の電力測定の実施形態を示す概略的なグラフである。
【００１８】
【図２Ｂ】図２Ｂはサンプリング間隔の間にコアで実行されるアプリケーションの実際の電力測定のデジタルサンプリングの実施形態を示す概略的なグラフである。
【００１９】
【図３】図３は信号をサンプリングしサンプリングされた信号の値をシリアルに出力するための回路の実施形態を示す概略的な回路図である。
【００２０】
【図４】図４はサンプリングされた信号情報をユニットから出力するためのタイミングチャートの実施形態を示す概略図である。
【００２１】
【図５】図５は電力推定モニタ回路の実施形態を示す概略的なブロックダイアグラムである。
【００２２】
【図６】図６はコアの正確なリアルタイム電力推定のための方法の実施形態を示す概略的なブロックダイアグラム又はフローチャートである。
【００２３】
【図７】図７はコアの正確なリアルタイム電力推定のために、サンプリングされた信号に割り当てる重み（重み付け値）を決定するための方法の実施形態を示す概略的なブロックダイアグラム又はフローチャートである。
【００２４】
本発明は種々の改変及び代替的な形態を許容し得る一方で、特定の実施形態が図面において例示の目的で示されておりここに詳細に説明されている。しかしながら、図面及びそれに対する詳細な説明は、開示されている特定の形態に本発明を限定するよう意図されておらず、むしろ本発明は添付の特許請求の範囲によって画定されるような本発明の精神及び範囲内にある全ての改変、均等なもの及び代替的なものに及ぶものであることが理解されるべきである。
【発明を実施するための形態】
【００２５】
以下の説明では、本発明の深い理解を提供するために多くの特定な詳細が示される。しかし、これらの特定の詳細なしに本発明が実施可能であることを当業者は認識すべきである。幾つかの例では、周知の回路、構成、及び技術は本発明を不明瞭にすることを避けるために図示されていない。
【００２６】
図１を参照すると、コア電力管理機能１００の実施形態が示されている。ここではコア１０２は任意の集積回路（ＩＣ）であってよい。ある実施形態では、コア１０２はプロセッサコアであってよい。プロセッサコアはチップ上（on-die）の命令及びデータキャッシュを有していてよい。プロセッサコアは単一のパイプライン又は多重化されたパイプラインを有するスーパースケーラ(superscalar)プロセッサであってよい。他の実施形態では、コア１０２は特定用途向けＩＣ（ＡＳＩＣ）であってよい。コア１０２を実装するために任意のトランジスタファミリが用いられてよい。例として金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴｓ）及びバイポーラ接合トランジスタ（ＢＪＴｓ）が挙げられる。
【００２７】
機能ブロック１１０は論理機能、データ記憶等を実行するように構成されたトランジスタ群を含んでいてよい。電力管理の目的で機能ブロック１１０はユニット１１２ａ〜１１２ｄに分けられていてよい。ここで用いられているように、文字が続く参照数字によって参照される要素は集合的にその参照数字だけで参照されることがある。例えばユニット１１２ａ〜１１２ｄは集合的にユニット１１２と称されることがある。ある実施形態では、ユニット１１２は再配列バッファ、メモリ管理ユニット、実行ユニット、又はプロセッサの他の部分等の機能要素に対応していなくてよい。むしろユニット１１２は、電力管理の目的でサンプリングされることが必要な信号の種類に基いて選択されてよい。例えば、ローカルクロック分配ブロックに送られるクロックイネーブル信号が、サンプリングされるために選ばれた信号であってよい。
【００２８】
特定のクロック周期の間にどの信号をサンプリングするかの選択は、その選択が切り換えノード容量Ｃａｃの量にいかに良好に関連付けられているかに対応するであろう。サンプル信号選択の更なる説明は後で行われる。選択されたクロックイネーブル信号はフロアプラン内のいくつかの機能ブロックで重複していてよい。従って、例えばユニット１１２ａ及び１１２ｂを隔てる区域はフロアプラン内の区域に対応していなくてよい。ユニット１１２は電力を消費するユニットであり、この電力はリアルタイムで測定されることとなる。
【００２９】
ある実施形態では、ユニット１１２からのデータ、例えば所定のサンプリングされた全信号の論理値を収集するために、電力モニタ１３０が用いられてよい。データ収集の後、電力モニタ１３０は電力消費推定値を算出することができる。１つのモニタコントロール１３２が各ユニット１１２に対応してよい。代替的な実施形態では、モニタコントロール１３２は２つ以上のユニット１１２に対してデータを収集し、これらのユニット１１２での総電力消費推定値を算出してよい。更に他の実施形態では、１つのモニタコントロール１３２（即ちコントロール１３２ａ）は、１つ以上の他のモニタコントロール１３２（即ちコントロール１３２ｂ〜１３２ｄ）からのデータを収集するために、１つ以上の他のモニタコントロール１３２（即ちコントロール１３２ｂ〜１３２ｄ）との信号インタフェースを有していてよい。そして１つ以上のモニタコントロール１３２に対して電力推定値が算出されてよい。
【００３０】
信号サンプル１２０及びデータ出力１２２が電力管理を目的として用いられるコントロール及びデータ信号である。電力モニタ１３０と機能ブロック１１０の間でのインタフェース信号は、任意の必要な数の信号及び伝送プロトコルを備えていてよい。ある実施形態では、制御信号サンプル１２０は、選ばれた繰り返し間隔、例えば毎１００クロック周期の間に単一のクロック周期に対してのみ有効にされてよい。ある実施形態では、制御信号サンプル１２０が有効にされた後の所定数のクロック周期の時点で、異なるサンプリングされた信号に対してデータ信号データ出力１２２が各々クロック周期で論理値を供給し始めてよい。つまり、データ信号データ出力１２２は、サンプリングされた信号の論理値からなる一連の値を特定の周期でスキャンするために用いられてよい。また、他の実施形態では、各一対のモニタコントロール１３２及びユニット１１２の間での信号の信号対が無いこともある。代替的な実施形態では、モニタコントロール１３２にとってはユニット１１２に対して聞き取りを行い、ユニット１１２にとっては出力データを伝達する準備が整ったことをモニタコントロール１３２に認識させるために、追加的な信号が含まれていてよい。
【００３１】
機能ブロック１１０から受けたデータから正確なリアルタイム電力推定値を一旦電力モニタ１３０が算出したら、電力モニタ１３０は目下動作中の単一又は複数のアプリケーションの電力プロファイルを決定する。この決定は電力マネージャ１４０に伝達される。それによって電力マネージャ１４０はアプリケーションがスレッショルド限界よりも上（下）であれば電力を減少（増加）する能力を有する。
【００３２】
もし大電力のアプリケーション又はウイルスがコア１０２で実行されていれば、電力マネージャ１４０は動作電圧、動作周波数、又はその両方に対して調節を行うように構成される回路を備えることとなる。Ｃａｃに対して設定された限界を上回る平均電力を伴うアプリケーションに対しては、動作周波数は低減される必要がある。しかし、どのアプリケーションもＣａｃ限界を超えて切り換えないことが保証されているので、Ｃａｃに対して設定された下限は、高周波数の部分が捨てられることを可能にする。
【００３３】
前述したように、コア切り換え電力を推定する１つの方法は、命令発行頻度(instruction issue rate)を測定することである。残念なことに、多くの特殊な動作を有することのあるコアの幾つかの実施形態に対しては、データ幅、性能を高める回路、キャッシュ挙動の不確実性、多くの分岐予測方法の１つ等に起因してクロック周期内で切り換わるノード容量Ｃａｃを推定するための簡単な方法はほとんど無い。相関関係の無い少数の信号から正確にＣａｃを推定するために、それらの信号は、適正な電力モデルが設計され且つ広範な一連のアプリケーションが信号電力相関試験のためにそのモデルで実行されるまで、未知のものである。その時には、必要な信号サンプリング回路を必要な場所に追加する試みにより設計を変更しようとしても手遅れである。
【００３４】
一方、電力推定に対する顕著な効果を有する設計において、広範な一連の信号をサンプリングすることが可能である。この方法では信号がオーバーサンプリングされてよく、その理由は、多くの信号は相関する傾向にあり、幾つかの信号は電力に対して小さな影響のみを有するところにある。しかし、例えば効果的な実装を伴うことでオーバーサンプリングぎみの設計費用が小さければ、この方法によって正確なＣａｃモニターの信頼性が顕著に高まるであろう。
【００３５】
前述したように、Ｃａｃに対して重要な影響を有する設計において何百もの信号をサンプリングすることは、配線、回路、及びもしモニタリングが全動作周波数でなされるとすれば電力消費における諸経費に関して多大なる設計費用をもたらすであろう。しかし、電力推定をもたらすＣａｃ推定は、ミリ秒の範囲にある熱的時間フレームにおいて応答すれば足りるという事実を利用可能である。この時間フレームは、平均Ｃａｃを決定するための何百万周期を用いた推定を可能にする。事実、もし推定及びそれに続く応答が十分迅速に行われ且つアプリケーションが活発に動作している短期間に対して応答していたとすると、応答によってコアが絞られるであろう。次いで性能は不必要に低下させられるかもしれない。それに続く応答及び見込まれる絞込みが基いているところの長期間にわたるアプリケーションの平均電力をモニタリングすることが推定では必要となる。しかし、もしサンプリング間隔が何百万周期に及ぶとすれば、アプリケーションがコードの完全に無関係な部分にまで移動する蓋然性が高いので、サンプルのシグマ即ち標準偏差が著しく増大してしまうであろう。電力モデルデータに基き、サンプルに対する活発性の良好な相関が特定の範囲で見出されるであろう。例えばある実施形態では、典型的なアプリケーションに対して、サンプルに対する活発性の良好な相関は、５０Ｋクロック周期領域にあり、そこではシグマは小さい。
【００３６】
数百の既知の信号が最前列でサンプリングされるのに選ばれて且つ信号値がシリアル形式で走査される場合、信号に関連する活発性の単一のサンプルを得るためには数百クロック周期が必要とされる。次いで標準的な統計解析により、サンプルの平均及びシグマが信号の実際の母集団の平均及びシグマに密接に相関する信頼性が達成される（即ち９９％）には、これら数百の信号について数サンプルが必要である。
【００３７】
アプリケーションのスイッチング挙動がポアソン分布を有する定常ランダム過程(stationary random process)で近似可能であると仮定する。また、中心極限定理(central limit theorem)は、データの大規模な母集団が正規分布で正確に近似可能であることを我々に伝えている。この統計的手法は、母集団の小規模なサンプル、統計的調査数等から世論調査をなすために用いられる手法と類似している。広範な母集団の特性は十分な数のランダムサンプルを取ることで再構築される。決定されるべき２つのパラメータは、必要なサンプルの数とどの信号をサンプリングするかという点とである。
【００３８】
必要なサンプル数に対して、ある実施形態では、統計的解析並びにアプリケーションの実際の電力消費及びサンプリングから推定される電力消費の両方の測定を用いて集計表(spreadsheet)が生成されてよい。
【００３９】
図２Ａはサンプリング間隔の間にコアで実行されるアプリケーションの実際の電力測定２００の実施形態を示している。代替的な実施形態では、この電力測定は、コアの１区画、例えばユニット、機能要素等において行われてよい。ある実施形態では、この測定はコアの設計検証段階モデル(pre-silicon model)において実行される電力モデルによって行われてよい。ピーク電力２１０は、コアの機能障害によって、又はコアにおいて高電力ウイルス、例えばズラスキー(Zuraski)を実行することによって決められてよい。サンプリング間隔の間の消費電力は実際の電力波形２２０によって示されている。ある実施形態では、サンプリング間隔は何十ミリ秒の範囲にあってよい。
【００４０】
最新のプロセッサでは、高電力ウイルスであるズラスキーの低出力化された形態によって熱的設計電力（ＴＤＰ）が設定されてよい。この低出力化されたあるいは派生したＴＤＰコード及びその対応する電力消費は、取捨(binning)を目的としてコアの動作電圧及び周波数を設定するために用いられてよい。しかし、最新のプロセッサの寿命の大部分において、実行されているアプリケーションはこのＴＤＰ値の６０％乃至８０％を消費するにすぎない。
【００４１】
正確なリアルタイムＣａｃ推定及びそれに続く電力推定により、実行されるアプリケーションとＴＤＰの間で２０％乃至４０％のギャップを引き出すことが可能である。このことは、新たなＴＤＰがアプリケーション電力になるＴＤＰ低減、あるいはＴＤＰは以前と同じであるがそのＴＤＰが典型的なアプリケーションによって消費される周波数増大のいずれかにギャップを転換することで行うことができる。ウイルスはＣａｃ推定に続く電力管理による後続の応答によって絞られるので、ＴＤＰはウイルスによっては消費されないであろう。
【００４２】
図２Ｂはあるサンプリング間隔の間にコアで実行されるアプリケーションの実際の電力測定のデジタルサンプリング２３０の実施形態を示している。サンプリングされたデータ点２４０は間欠的周期２５０の各々の間に取られている。図示された実施形態では、サンプリングされたデータ点２４０ａで開始されサンプリングされたデータ点２４０ｎで終了するサンプリング間隔の間に全部でＮサンプルが取られる。電力推定値のサンプリングの合間での間欠的周期の数の決定は、サンプリングされたデータ点の数Ｎの値の決定に依存していてよく、間欠的周期の数は所望の正確性及び信頼性に依存する。
【００４３】
上述したように、アプリケーションの実際の電力消費及び図２Ａ〜２Ｂに示されたサンプリングから推定された電力消費の両方の測定値と統計的解析との両方を用いて集計表又は参照テーブル(look-up table)が生成されてよい。
【００４４】
例えば、第１の例では、図２Ｂに示されるようなサンプルのコア全体にわたる平均が図２Ａに示されるような実際のアプリケーションの平均のシグマ即ち標準偏差の１２％の範囲内になるような９５％の信頼性を設計目標が要求してよい。０．１２＊シグマの項は統計的サンプリングに起因する誤差である。参照テーブル又は集計表を用いて、例えば少なくとも５００サンプルがそれらの設計要求を達成するために必要とされることが決定されてよい。電力推定をもたらすＣａｃ推定がミリ秒の範囲にある熱的時間フレームに応答することのみが必要とされることを思い出して欲しい。この時間フレームは平均Ｃａｃを決定するために何百万の周期を用いた推定を可能にする。サンプリング間隔は２５μｓであってよい。ある実施形態では、動作周波数は３ＧＨｚであってよい。この例では、従ってサンプリングの間の間欠的クロック周期の数は、（３ＧＨｚ）＊（２５μｓ）／５００＝１５０クロック周期となろう。ある実施形態では、種々のサンプリングされた信号の値はシリアル形式で走査されてよい。従って、１５０の信号が単一のクロック周期でサンプリングされて次のサンプリングが実行される前にシリアル的に走査されてよい。
【００４５】
この例では、推定シナリオの最悪のケースは±２シグマの切り取られた正規分布を含み、１シグマは範囲の２５％である。従って、最悪のケースの誤差は０．１２＊０．２５＝３％となる。より典型的な最大シグマ値は概ね１０％である。１２％シグマの誤差項の場合、統計的サンプリングに起因する誤差が０．１２＊０．１＝１．２％である９５％の信頼性を有することができる。
【００４６】
第２の例では、図２Ｂに示されるようなサンプルのコア全体にわたる平均が図２Ａに示されるような実際のアプリケーションの平均のシグマ即ち標準偏差の１０％の範囲内になるような９９％の信頼性を設計目標が要求してよい。０．１０＊シグマの項は統計的サンプリングに起因する誤差である。参照テーブル又は集計表を用いて、例えば少なくとも６５０サンプルがそれらの設計要求を達成するために必要とされることが決定されてよい。また、ある実施形態では、コアは１０ユニットに分割されてよく、この場合各ユニットは同数の信号をサンプリングする。この分割の理由は以下に簡潔に示されるように正確性を高めるところにある。各ユニットに対して求められる信頼性は高々９０％である。信頼性の総和は、０．９１／１０が０．９８９５であるから、９９％の総信頼性を生じさせる。参照テーブル又は集計表を再び用いて、６５０サンプル及び９０％信頼性に対して、シグマからの偏差がもはや１０％ではなく６．５％にまで低減されることを決定可能である。個々のユニットに対してはその正確性が高まるにつれ信頼性レベルは低下したが、コアに対する全体としての信頼性レベルは９９％を維持しており、またその正確性は１０％から６．５％に改善された。
【００４７】
もしこの第２の例が上述の第１の例と同じ２５μｓのサンプル間隔を有しており且つ動作周波数が３ＧＨｚで同じであるとすると、サンプル間の間欠的クロック周期の数は、（３ＧＨｚ）＊（２５μｓ）／６５０＝１１５クロック周期となろう。ある実施形態では、第１の例のように種々のサンプリングされた信号はシリアル形式で走査されてよい。従って、１１５の信号が単一のクロック周期で１０ユニットのそれぞれからサンプリングされて次のサンプリングが実行される前にシリアル的に走査されてよい。
【００４８】
図３を参照すると、信号をサンプリングしサンプリングされた信号の値をシリアルに出力するための回路３００の実施形態が示されている。ある実施形態では、クロック周期内でサンプリングするのに選択された信号を捕獲するために、Ｄフリップフロップ回路３２０及びマルチプレクサ３１０が、図示されるようにサンプリングされるべき信号に対してのみ配置されていてよく、それらの信号は信号３５０として示されている。この追加的な回路は、正確なリアルタイムＣａｃ推定のためのサンプリングされたデータを得るのに低い諸経費をもたらす。選択ライン、即ちサンプル１２０が高論理値として有効になると、信号３５０がマルチプレクサ３１０によって選択されてＤフリップフロップ３２０に格納される。
【００４９】
信号サンプル１２０は図１のモニタコントロール１３２のような制御ブロックから受信されてよい。ある実施形態では、コアのユニットでサンプリングする信号の数は１００であってよい。代替的な実施形態では、サンプリングする信号の数は、特定のコア設計に対して正確な電力推定を提供する任意の数であってよい。サンプル１２０はクロック周期の１００周期毎に有効にされてよく、これにより、サンプリングされた信号の捕獲された値がサンプル間でシリアルに出力されることが可能になる。
【００５０】
Ｄフリップフロップ３２０に供給されるクロック信号Ｃｌｋ３３０はゲート未処理の(ungated)クロック信号であってよい。信号サンプル１２０が低論理値として無効になると、マルチプレクサ３１０は前段のＤフリップフロップ３２０の出力値を伝達する。このように、１００個のサンプリングされた信号、即ち信号３５０のサンプリングクロック周期の間に値がシリアル形式で出力される。モニタコントロール１３２への経路距離に応じて、インバータバッファがＤフリップフロップ３２０ａの後段に配置されていてよい。
【００５１】
ある実施形態では、サンプリングのために選択される信号は、クロックゲータイネーブル信号(clock gater enable signal)であってよい。ゲータ回路はクロック信号を生成するクロック分配システムの最終段であってよい。典型的には、ゲータ回路は最新のプロセッサのフロアプランのローカルブロック内にあり、ローカル設計者はブロック内の特定のクロック負荷を駆動するゲータ回路をクロックライブラリから選択する。
【００５２】
図３におけるゲータ回路３４０は、クロック分配システム内の前段からの共通クロック３６０とイネーブル信号、即ちＣｌｋイネーブル３６２とを受け取る。Ｃｌｋイネーブル３６２は、図示された実施形態では、サンプリングされるべき信号であって且つマルチプレクサ３１０への１つの入力である。ゲータ回路３４０は他の種類の信号の内の走査入出力信号と結合されていてもよい。
【００５３】
統計的解析について上述したように、統計的サンプリングによるＣａｃ推定の誤差はおそらく小さい。しかし、サンプリングされた信号活発性(signal activity)のノードスイッチング容量Ｃａｃに対する不正確な相関性に起因する誤差があり得る。クロックゲータイネーブル信号Ｃｌｋイネーブル３６２は、ローカル設計者が配置するのが比較的に容易である。これらの信号はまた、下流の回路が動作中か否かについて、従って下流のノード容量が切り換え可能か否かについて直接的に決定する。
【００５４】
サンプリングされる特定のＣｌｋイネーブル３６２に対して、対応する記憶された高論理値は、少なくとも最小容量に切り換えられていることを意味する。容量の追加量は、そのクロックゲータイネーブル即ちＣｌｋイネーブル３６２の下流の他の信号及び構成により決定される条件によって切り換えられる。Ｃａｃがどのように変化するかを種々の方法で決定するゲータクロックイネーブル信号の下流の信号の幾つかの例は、有効ビット、一例としては負荷記憶キュー(load-store queue)；オペランドビット幅；及びキャッシュの成功又は失敗(cache hit or miss)である。図３には示されていないが、代替的な実施形態では、これらの信号の幾つか及び他の信号は、クロックゲータイネーブル信号と論理的に組み合わされてよく、この場合、サンプリングされマルチプレクサ３１０に入力されるべき新たな信号が生成される。この新たな信号は切り換えられた最小容量に付加すべき容量増分を決定してよい。
【００５５】
また、クロックゲータイネーブル以外にも、切り換えられた容量を示す有効性(assertion)を有する信号がある。幾つかの例は、バスドライバイネーブル、コンテントアドレッサブルメモリ(content-addressable memories)（ＣＡＭ）の不一致、及びＣＡＭワード線（ＷＬ）ドライバである。これらの信号に対して付加的な切り換えられた容量を決定するのに遷移検出器が必要になることがある。
【００５６】
図４は図３の回路３００におけるクロック３３０、サンプル１２０、及びデータ出力１２２の信号のためのタイミングチャートの実施形態を示している。クロック３３０はゲート未処理のクロック信号である。サンプル１２０が有効になると、サンプリングされた信号即ち信号３５０がＤフリップフロップ３２０に格納される。サンプル１２０が無効になると、サンプリング信号即ち信号３５０はシリアルで連鎖的にラインデータ出力１２２として出力される。
【００５７】
信号のサンプリングが一旦正確に行われたら、この情報は加重平均合計(weighted average sum)を用いてＣａｃ推定値に変換される。図５を参照すると、加重平均合計を決定するための回路５００の実施形態が示されている。この回路はモニタコントロール１３２に属していてよい。チェインコントロール(chain control)５０２はサンプル１２０を機能ブロック１１０内のユニットに伝達してよい。また、チェインコントロール５０２はデータ出力１２２を受信してよい。サンプル１２０がデータをサンプリングするために有効にされてから無効にされた後、チェインコントロール５０２はどの信号、又はシリアル連鎖におけるどのビット位置がその受信中の値を目下有しているかを追跡してよい。ある実施形態では、サンプリングされた信号を区別するためにカウンタが用いられてよい。そのようなカウンタの出力は重みテーブル５０４に索引付けするために用いられてよい。チェインコントロール５０２により伝達される値は、重みテーブル５０４内のビット位置５０６にエントリーするために比較されてよい。エントリーが索引にヒット又は一致すれば、それに対応して重み５０８内に記憶されている重みが重み積算器５１０に伝達される。ここで、受信した重みが予め受信していた重みと合算される。
【００５８】
例えば、１００の信号がサンプリングされるのに選択されてよい。新たなサンプリング周期が開始されたとして、ラインデータ出力１２２として受信したその時点での値がこの新たなサンプリング周期の３７番目に受信した値であるとする。もしこの３７番目のサンプリングされた値が低論理値を有していれば、３８番目のサンプリング値が到着するまではそれ以上の動作がなされる必要は無い。もし３７番目のサンプリングされた値が高論理値を有していれば、３７という値が重みテーブル５０４に索引付けするために用いられる。３７番目のサンプリングされた信号のための対応する重みが重み積算器５１０に伝達される。この対応する重みは、高論理値を有した既に受信されている３６個の値の累積重みに合算される。重み用の値を選択するために用いられる方法を以下簡潔に説明する。
【００５９】
図６はコアの正確なリアルタイム電力推定のための方法６００の実施形態を示している。方法６００は代替的な実施形態を導き出すために当業者によって修正されてよい。また、この実施形態におけるステップはシーケンシャルな順序で示されている。しかし、幾つかのステップは、他の実施形態では、図示されたのと異なる順序で起こってよく、同時に実行されてよく、他のステップと組み合わされてよく、また省略されてよい。図示された実施形態では、半導体チップについてフロアプランが作成され、個々のブロック及びセルはブロック６０２内のフロアプランに従って配置される。コアはチップ全体あるいはチップの一部であってよい。前述したように、コアはＩＣであってよい。ある実施形態では、コアはプロセッサコアであってよい。他の実施形態では、コアはＡＳＩＣ又は他の半導体チップであってよい。
【００６０】
ブロック６０４でのサンプリングを目的として、コアは複数ユニットに分割されてよい。各ユニットは所定のサンプリングされた信号の値のシリアル連鎖を提供してよい。ブロック６０６では、サンプリング間隔の間にダイ全体の電力消費を特徴付けるために、広範な一連のアプリケーションにわたり電力モデルがコア上で実行される。ブロック６０８では、アプリケーションを実行する一方で、コアのノード容量切り換え挙動を特徴付ける、ポアソン分布等を用いた統計的解析によりもたらされる参照テーブルから、サンプリング間隔内で実行されるサンプリングの数が決定されてよい。次いで、動作周波数、サンプル間隔、及び取り込むサンプルの決定された数から、サンプリングする信号の数が決定されてよい。
【００６１】
ブロック６１０では、重み値が各サンプリングされた信号に割り当てられる。この処理の更に詳細な説明は後でなされる。有効にされてサンプリングされた信号の重みの合計は、特定のクロック周期におけるコアの正確なリアルタイム電力推定を決定するために用いられる。その合計は特定のクロック周期におけるノード切り換え容量Ｃａｃの推定であり、この合計は参照テーブルに索引付けすることによって電力数(power number)に形を変えられてよい。この参照テーブルは電力モデルがコアで動作させられたときの特徴付け処理によって作成されていてもよい。
【００６２】
ブロック６１２では、サンプリングされた信号の重みの合計から生成されるリアルタイム電力推定値が、所定のアプリケーション一式内の各アプリケーションに対する電力モデルから生成される電力推定値と比較される。もしこれら２つの値の差が予め定められた最低の正確性以下であれば（条件ブロック６１４）、電力推定回路の設計は完了し、ブロック６１６においてチップをコア内のモニタコントロールと共にテープアウトしてよい。もし最低の正確性の条件に合わなければ（条件ブロック６１４）、制御フローはブロック６０８に戻る。サンプリングの新たな回数とサンプリングすべき信号の新たな数が選択される。
【００６３】
図７はコアの正確なリアルタイム電力推定のために、サンプリングされた信号に割り当てられる重み（重み付け値）を決定する方法７００を示している。方法７００は代替的な実施形態を導き出すために当業者によって修正されてよい。また、この実施形態におけるステップはシーケンシャルな順序で示されている。しかし、幾つかのステップは、他の実施形態では、図示されたのと異なる順序で起こってよく、同時に実行されてよく、他のステップと組み合わされてよく、また省略されてよい。図示された実施形態では、ブロック７０２において、サンプリング間隔の間におけるダイ全体の電力消費を特徴付けるために、広範な一連のアプリケーションにわたり電力モデルがコア上で実行される。
【００６４】
ブロック７０４では、最初の均等な重み値が各サンプリングされた信号に割り当てられる。この最初の値を決定するために、特定のアプリケーションがコア上で実行され、当該クロック周期において有効にされてサンプリングされた信号の合計が記録される。有効にされてサンプリングされた信号の数が、サンプリング間隔内での各サンプリングされたクロック周期に対して記録される。１つのサンプリング間隔内には何百のサンプリングされたクロック周期があってよい。ブロック７０２内での電力モデルの実行から見出されたこのサンプリング間隔に対する実際の電力推定が、実際のＣａｃ値を決定するために用いられる。この実際のＣａｃはサンプリング間隔にわたって有効にされてサンプリングされた信号の総計によって除される。この除して得られた値が各サンプリングされた信号に割り当てられる均等な最初の重み値であってよい。
【００６５】
上述のステップはブロック７０６においてアプリケーション一式の各アプリケーションに対して実行されてよい。各アプリケーションはそれ自身に生成された最初の均等な重み値をサンプリングされた信号に対して有することとなろう。ブロック７０８では、これらの値全ての平均がサンプリングされた信号に対して用いられる最初の均等な重み値となってよい。
【００６６】
各アプリケーションに対して、最初の重みから算出されたＣａｃは誤差項を有することになろう。ブロック７１０において全てのアプリケーションに対して総誤差が算出される。ある実施形態では、この総誤差は各アプリケーションに対する誤差の合計であってよい。代替的な実施形態では、この総誤差は各アプリケーションに対する誤差の二乗の合計であってよい。代替的な実施形態では、総誤差を算出するために他の式が用いられてよい。
【００６７】
ブロック７１２では、特定のサンプリングされた信号に対して、その対応する最初の均等な重み値が、総誤差を小さくする方向に増大又は減少させられてよい。もし総誤差が小さくなるのを停止しなかったならば（条件ブロック７１４）、制御フローはブロック７１２に戻る。もし総誤差が小さくなるのを停止すれば、ブロック７１６においてその特定のサンプリングされた信号に対するその時点での重み値が保存される。この値は重みテーブル５０４等のテーブル内に保存することができる。
【００６８】
もしサンプリングされた全ての信号が、見込まれる値変化について調査されていなければ（条件ブロック７１８）、制御フローはブロック７１２に戻る。もしサンプリングされた全ての信号が、見込まれる値変化について調査されたならば（条件ブロック７１８）、ブロック７２０において、重み値を記憶する１つ以上のテーブルが最後の重み値を有することとなる。
【００６９】
上述の実施形態はかなり詳細に説明されてきたが、上述の開示を完全に理解することで多くの変形や修正が当業者には明らかになろう。以下の特許請求の範囲は全てのそのような変形や修正を包含するものとして解釈されることが意図されている。
【産業上の利用可能性】
【００７０】
この発明は一般的には電子回路に適用可能である。
【図１】
0005615262.tif 000002
【図２Ａ】
0005615262.tif 000003
【図２Ｂ】
0005615262.tif 000004
【図３】
0005615262.tif 000005
【図４】
0005615262.tif 000006
【図５】
0005615262.tif 000007
【図６】
0005615262.tif 000008
【図７】
0005615262.tif 000009