(57)【要約】プロセッサ（１００）は、メモリ制御装置（１１０）が１つ以上のメモリアクセス要求に応答するのにかかる時間を直接的又は間接的に監視する。プログラムスレッドのメモリレイテンシ許容度を超えた（５０４）ことをメモリアクセスレイテンシが示す場合に、プロセッサは、メモリ制御装置への追加の電力を配分し（５０６）、これにより、メモリ制御装置がメモリアクセス要求を処理可能な速度を向上させることができる。【選択図】図１
2017526039.tif 000002
【特許請求の範囲】
【請求項１】
実行中のプログラムスレッドのメモリレイテンシ許容度を超えたことを識別したことに応じて（５０４）、プロセッサ（１００）のメモリ制御装置（１１０）への電力を増大すること（５１０）を含む、
方法。
【請求項２】
前記プロセッサのキャッシュでのキャッシュミス率に基づいて、前記実行中のプログラムスレッドのメモリレイテンシ許容度を超えたことを識別すること（５０４）、をさらに含む、
請求項１に記載の方法。
【請求項３】
前記実行中のプログラムスレッドのメモリレイテンシ許容度を超えていないことを識別したことに応じて（５１４）、前記プロセッサのメモリ制御装置への電力を低減すること（５１６）、をさらに含む、
請求項１に記載の方法。
【請求項４】
前記メモリ制御装置への電力を増大することは、前記実行中のプログラムスレッドのメモリレイテンシ許容度を第１の量だけ超えたことを識別したことに応じて（４０１）、前記電力の第１のレベルに増大することと、
前記実行中のプログラムスレッドのメモリレイテンシ許容度を第２の量だけ超えたことを識別したことに応じて、前記メモリ制御装置への電力を第２のレベルに増大することと（４０３）、をさらに含む、
請求項１に記載の方法。
【請求項５】
前記メモリ制御装置への電力を増大することは、前記実行中のプログラムスレッドのメモリレイテンシ許容度を第１の量だけ超えたことを識別したことに応じて（３０１）、前記電力の第１のレベルに増大することを含み、
前記プロセッサのプロセッサコアにおけるサイクルあたりの命令数の比率が第２の閾値未満であることに応じて、前記メモリ制御装置への電力を前記第１のレベルから第２のレベルに低減すること（３０３）をさらに含む、
請求項１に記載の方法。
【請求項６】
前記プロセッサにおけるメモリアクセス要求が、閾値を上回る量のメモリ帯域幅を必要とすることを識別したことに応じて、前記メモリ制御装置への電力を増大すること（５１４）をさらに含む、
請求項１に記載の方法。
【請求項７】
前記メモリ制御装置において受信したメモリアクセス要求の数に基づいて、前記実行中のプログラムスレッドのメモリレイテンシ許容度を超えたことを識別することをさらに含む、
請求項１に記載の方法。
【請求項８】
前記メモリ制御装置はノースブリッジを含む、
請求項１に記載の方法。
【請求項９】
プロセッサ（１００）におけるキャッシュミス率が第１の閾値を超えたことに応じて（５０４）、前記プロセッサのメモリ制御装置（１１０）への電力を増大すること（５１０）を含む、
方法。
【請求項１０】
前記キャッシュミス率が前記第１の閾値を下回ったことに応じて（５１４）、前記メモリ制御装置への電力を低減すること（５１６）をさらに含む、
請求項９に記載の方法。
【請求項１１】
前記メモリ制御装置への電力を増大することは、前記メモリ制御装置への電力を第１のレベルに増大すること（４０１）を含み、
前記キャッシュミス率が第２の閾値を超えたことに応じて、前記メモリ制御装置への電力を第２のレベルに増大すること（４０３）をさらに含む、
請求項９に記載の方法。
【請求項１２】
前記プロセッサのプロセッサコアにおけるサイクルあたりの命令数の比率が第２の閾値未満であることに応じて、前記メモリ制御装置への電力を低減すること（３０３）をさらに含む、
請求項９に記載の方法。
【請求項１３】
前記メモリ制御装置への電力を増大した後に前記メモリ制御装置にて閾値数のメモリアクセス要求を実行したことに応じて、前記メモリ制御装置への電力を低減することをさらに含む、
請求項９に記載の方法。
【請求項１４】
メモリアクセス要求を処理するメモリ制御装置（１１０）と、
プログラムスレッドのメモリレイテンシ許容度を超えたか否かを示す性能情報を監視するパフォーマンスモニタ（１１５）と、
前記パフォーマンスモニタが、前記プログラムスレッドのメモリレイテンシ許容度を超えたことを示したことに応じて、前記メモリ制御装置への電力を増大させる電力制御モジュール（１２０）と、を備える、
プロセッサ（１００）。
【請求項１５】
前記パフォーマンスモニタは、前記プロセッサのキャッシュでのキャッシュミス率に基づいて、前記プログラムスレッドのメモリレイテンシ許容度を超えたことを示す（５０４）、
請求項１４に記載のプロセッサ。
【請求項１６】
前記電力制御モジュールは、
前記パフォーマンスモニタが、前記プログラムスレッドのメモリレイテンシ許容度を超えていないことを示したことに応じて（５１４）、前記メモリ制御装置への電力を低減させる、
請求項１４に記載のプロセッサ。
【請求項１７】
前記電力制御モジュールは、
前記パフォーマンスモニタが、前記プログラムスレッドのメモリレイテンシ許容度を第１の量だけ超えたことを示したことに応じて（４０１）、前記メモリ制御装置への電力を第１のレベルに増大させ、
前記パフォーマンスモニタが、前記プログラムスレッドのメモリレイテンシ許容度を第２の量だけ超えたことを示したことに応じて（４０３）、前記メモリ制御装置への電力を第２のレベルに増大させる、
請求項１４に記載のプロセッサ。
【請求項１８】
前記電力制御モジュールは、
前記プログラムスレッドのメモリレイテンシ許容度を超えたことに応じて（３０１）、前記メモリ制御装置への電力を第１のレベルに増大させ、
前記パフォーマンスモニタが、前記プロセッサのプロセッサコアにおけるサイクルあたりの命令数の比率が閾値未満であることを示したことに応じて、前記メモリ制御装置への電力を前記第１のレベルから第２のレベルに低減させる（３０３）、
請求項１４に記載のプロセッサ。
【請求項１９】
前記電力制御モジュールは、
前記パフォーマンスモニタが、前記メモリアクセス要求が必要とする帯域幅が閾値を超えたことを示したことに応じて、前記メモリ制御装置への電力を増大させる、
請求項１４に記載のプロセッサ。
【請求項２０】
前記パフォーマンスモニタは、前記メモリ制御装置において受信したメモリアクセス要求の数に基づいて、前記プログラムスレッドのメモリレイテンシ許容度を超えたことを示す、
請求項１４に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してプロセッサに関し、より具体的には、プロセッサの電力管理に関する。
【背景技術】
【０００２】
例えばバッテリで駆動されるプロセッサを有する多くの電子装置に関しては、少なくとも最低限の性能目標を満たしながらプロセッサの消費電力を極力少なくすることが望ましい。これにより、プロセッサには、通常、プロセッサに与えられる電力を表す電圧又は他の特性によって表される電力バジェット（power budget）が割り当てられている。プロセッサは、各モジュールに印加される電圧又は他の特性を、少なくとも最低限の性能目標を満たすように設定することによって、例えばプロセッサコア、メモリ制御装置等の様々なモジュールに電力バジェットを配分する。しかし、各モジュールは、あらゆる状況下で、配分された電力を必要とするわけではない。例えば、実行する動作のないモジュールは、短時間の間、配分された電力を必要とせずに、プロセッサに対して、当該モジュールに配分された電力の一部を異なるモジュールに一時的に割り当て直させることによって、プロセッサ全体の性能を向上し得る。
【０００３】
添付図面を参照することによって、本開示をよりよく理解することができ、本開示の多くの特徴及び利点が当業者に明らかとなる。異なる図面における同一の符号の使用は、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、メモリアクセスレイテンシに基づいて電力をメモリ制御装置に配分することができるプロセッサのブロック図である。
【図２】いくつかの実施形態による、プログラムスレッドのメモリレイテンシ許容度に基づく図１のメモリ制御装置への電力の配分を示す図である。
【図３】いくつかの実施形態による、プログラムスレッドのメモリレイテンシ許容度及び命令処理速度に基づく図１のメモリ制御装置への電力の配分を示す図である。
【図４】いくつかの実施形態による、複数の閾値に対するプログラムスレッドのメモリレイテンシ許容度に基づく図１のメモリ制御装置への電力の配分を示す図である。
【図５】いくつかの実施形態による、プログラムスレッドのメモリレイテンシ許容度に基づくプロセッサのメモリ制御装置への電力の配分方法を示すフロー図である。
【図６】いくつかの実施形態による、処理システムの少なくとも一部の要素を実装する集積回路装置の設計及び製造方法を示すフロー図である。
【発明を実施するための形態】
【０００５】
図１〜６は、プログラムスレッドのメモリレイテンシ許容度に基づいてプロセッサのメモリ制御装置に電力を配分する技術を示す図である。プロセッサは、メモリ制御装置が１つ以上のメモリアクセス要求の応答にかかる時間を監視することによって、プログラムスレッドのメモリレイテンシを直接的又は間接的に監視する。例えばキャッシュミス率等の１つ以上の性能特性で示されるようにプログラムスレッドのメモリレイテンシ許容度を超える場合には、プロセッサは、追加の電力をメモリ制御装置へ配分し、これにより、メモリ制御装置によるメモリアクセス要求の処理速度を向上させることができる。プログラムスレッドのメモリレイテンシ許容度を超えない場合には、プロセッサは、メモリ制御装置に配分される電力量を低減させることができる。このようにして、プロセッサは、電力を節約しながらプログラムスレッドの実行性能を向上させる。
【０００６】
いくつかの実施形態において示すように、プロセッサは、メモリ制御装置に与えられるメモリアクセス要求を監視することによって、キャッシュミスを検出する。例えば、キャッシュに与えられたメモリアクセス要求が、キャッシュミスによってメモリ制御装置に転送されることがある。キャッシュのキャッシュミス率（ＣＭＲ）が閾値を超える場合には、メモリ制御装置は、比較的多数の処理すべきメモリアクセス要求を有する可能性が高く、そのために実行中のプログラムスレッドのメモリアクセスの処理に遅延が生じて、実行中のプログラムスレッドのメモリレイテンシを増大させ、スレッドのメモリレイテンシ許容度を超える場合があると考えられる。それに応じて、プロセッサのアプリケーションパワーマネジメント（ＡＰＭ）モジュールは、メモリ制御装置に印加される電力電圧を増大させることができる。この増大した電力電圧によって、メモリ制御装置のトランジスタをより迅速に切り替えて、メモリ制御装置が待ち状態のメモリアクセス要求を処理し得る全体の速度を向上させることができる。したがって、処理されるメモリアクセス要求が比較的多数存在する場合には、メモリ制御装置に供給された電力の増大によって、メモリアクセスレイテンシが低減する。メモリ制御装置において処理すべきメモリアクセス要求が比較的少数である場合には、ＣＭＲが示すように、ＡＰＭモジュールは、メモリ制御装置に印加される電源電圧を低減させ、それによって電力を節約することができる。
【０００７】
ここで、「メモリレイテンシ（memory latency）」は、メモリアクセス要求の実行が完了するまでにかかる時間を意味する。いくつかの実施形態において、特定のメモリアクセス要求のメモリレイテンシは、メモリ制御装置においてメモリアクセス要求を処理可能な速度を含むいくつかの要因に依存する。さらに、メモリ制御装置への電力の増大によって、メモリ制御装置がメモリアクセス要求をより迅速に処理することが可能になるので、メモリ制御装置への電力の増大は、メモリレイテンシを低減させる。
【０００８】
ここで、「メモリレイテンシ許容度（memory latency tolerance）」は、例えばプロセッサに接続された外部ＲＡＭ等のメモリ階層の指定されたレベルへのプログラムスレッドのアクセス感度（sensitivity）を意味する。感度は、プログラムスレッドの少なくとも一部の実行にかかる時間、又は、かかると予想される時間として表すことができる。いくつかの実施形態において、プロセッサは、カウンタ又は他のタイミング機構を用いて、メモリ制御装置におけるメモリアクセス要求の処理にかかる時間を測定することによって、プログラムスレッドのメモリアクセス許容度を超えたか否かを測定することができる。いくつかの実施形態において、プロセッサは、例えばキャッシュミス率、メモリ制御装置が受信したメモリアクセス要求の数、又は、他の性能インジケータ等の性能インジケータを用いて、実行中のプログラムスレッドのメモリレイテンシ許容度を超えたか否かを間接的に測定することができる。
【０００９】
本明細書で述べるように、プロセッサは、メモリアクセスレイテンシに基づいて電力をメモリ制御装置に配分することができる。本明細書に記載の実施形態においては、説明のために、メモリ制御装置の１つ以上の基準電圧（ＶＤＤと称されることがある）の大きさを変更することによって電力を配分するプロセッサを採用する。いくつかの実施形態において、プロセッサは、メモリ制御装置の１つ以上のノードに流れる電流量を変更する等の他の方法によって電力を配分してもよいことを理解されたい。
【００１０】
図１は、いくつかの実施形態による、電力をメモリ制御装置に配分可能なプロセッサ１００を示す図である。例示されたプロセッサ１００は、例えばｘ８６命令セットアーキテクチャ（ＩＳＡ）、ＡＲＭ  ＩＳＡ等に基づく中央処理装置（ＣＰＵ）コアであってもよいプロセッサコア１０２を含む。プロセッサ１００は、複数のかかるプロセッサコアを実装可能であり、例えば、プロセッサ１００のためにグラフィックス操作を実行する１つ以上のグラフィックス処理装置（ＧＰＵ）コア等の特別な操作を実行するよう設計又は構成されたプロセッサコアをさらに実装可能である。プロセッサ１００は、例えば、ノート型コンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、コンピューティング可能な携帯電話、携帯情報端末（ＰＤＡ）、セットトップボックス等の様々な電子装置の何れかに実装することができる。
【００１１】
プロセッサコア１０２は、電子装置のためにタスクを実行する命令のセット（プログラムスレッドと呼ばれる）を実行する。プログラムスレッドを実行する過程において、プロセッサコア１０２は、プロセッサコア１０２の内部レジスタに記憶されていないデータを要求することを表す要求（メモリアクセス要求と呼ばれる）を生成することができる。メモリアクセス要求は、以降の利用に備えて、対応するデータの記憶要求を表すストア操作と、プロセッサコア１０２による利用に備えて、記憶されたデータの検索要求を表すロード操作と、を含むことができる。
【００１２】
図示された実施例において、プロセッサ１００は、対応するデータを記憶するキャッシュラインと呼ばれるエントリのセットを有するキャッシュ１０３を含む。各ラインは、記憶するデータを識別するメモリアドレスに関連付けられている。キャッシュ１０３は、メモリアクセス要求に応じて、当該メモリアクセス要求のメモリアドレスによって識別されたデータを記憶するラインを含むか否かを識別する。ラインを含む場合には、キャッシュ１０３は、データの提供（ロード操作の場合）又はメモリアクセス要求に関連するデータの記憶（ストア操作の場合）の何れかによってキャッシュヒットを示して、メモリアクセス要求を満たす。キャッシュ１０３は、メモリアクセス要求のメモリアドレスによって識別されたデータを記憶するラインを含まない場合に、キャッシュミスを示して、メモリアクセス要求をメモリ制御装置１１０に提供する。後述するように、メモリ制御装置１１０は、メモリアドレスに関連するデータをシステムメモリ（図示省略）から取得し、取得したデータをキャッシュ１０３に提供することによって、メモリアクセス要求を満たす。キャッシュ１０３は、これに応じて、キャッシュ置換ポリシーに基づき選択された１つのラインにデータを記憶する。また、上述したように、キャッシュ１０３は、取得したデータを用いてメモリアクセス要求を満たす。
【００１３】
キャッシュ１０３は、単一のキャッシュとして図示されているが、いくつかの実施形態では、異なるキャッシュの階層を表している。例えば、キャッシュ１０３は、プロセッサコア１０２専用のレベル１（Ｌ１）キャッシュと、プロセッサコア１０２と他のプロセッサコア（図示省略）との間で共有されるレベル２（Ｌ２）キャッシュと、１つ以上の追加レベルのキャッシュと、を含むことができる。キャッシュ１０３は、メモリアクセス要求に応じて、当該メモリアクセス要求のメモリアドレスに対応するラインを有するキャッシュの位置を特定するまで各レベルにて個別にキャッシュミス又はヒットを示すことで、階層内の各キャッシュのチェックを連続的に行うことができる。何れのキャッシュもメモリアクセス要求のメモリアドレスに対応するラインを含まない場合には、キャッシュ１０３は、上述したように、メモリアクセス要求を満たすために当該メモリアクセス要求をメモリ制御装置１１０に提供する。
【００１４】
メモリ制御装置１１０は、例えば、ランダムアクセスメモリ（ＲＡＭ）モジュール、フラッシュメモリ、ハードディスクドライブ、又は、これらの組み合わせ等の１つ以上のメモリ装置を含むシステムメモリ（図示省略）へのメモリアクセス要求の通信を管理する。さらに、メモリ制御装置１１０は、複数のメモリアクセス要求をバッファリングし、特定のアービトレーションポリシーに従って各要求を処理することができるように構成されている。メモリアクセス要求の処理には、メモリアクセス要求のバッファリング、バッファに記憶されたメモリアクセス要求と他の待ち状態のメモリアクセス要求との間の調停、メモリアクセス要求をシステムメモリの１つ以上のメモリ装置へ通信する制御シグナリングの生成、メモリアクセス要求に応じてシステムメモリから受信したデータのバッファリング、及び、受信したデータのキャッシュ１０３への通信を含むことができる。いくつかの実施形態において、メモリ制御装置１１０は、キャッシュ１０３と他のプロセッサキャッシュ（図示省略）との間のメモリコヒーレンシの管理、プロセッサコアとシステムモジュールとの間の通信管理等を含む追加的な機能を実行するノースブリッジである。
【００１５】
メモリ制御装置１１０は、図１では個別に示されていない、トランジスタ及び他の電子部品から構成されたモジュールのセットを含む。これらの電子部品には、「ＶＤＤ」と呼ばれる基準電圧による電力が供給される。少なくとも一部の電子部品は、ＶＤＤの大きさが増大するほど、入力刺激に対して迅速に応答することができるように動作する。例えば、メモリ制御装置１１０は、入力刺激（例えば、各ゲート電極の電圧）に基づいて導通状態と非導通状態とを切り替えるように構成された１つ以上のトランジスタを含むことができる。ＶＤＤの大きさが増大するほど、１つ以上のトランジスタが導通状態と非導通状態とを切り替える速度が向上する。したがって、ＶＤＤの大きさが増大することの正味の効果は、メモリ制御装置１１０がメモリアクセスレイテンシを低減させながらメモリアクセス要求をより迅速に処理可能であるということにある。
【００１６】
プロセッサ１００は、ＶＤＤの大きさを設定するように構成された電圧レギュレータ１２１を含む。本明細書で説明するように、プロセッサ１００は、プログラムスレッドのメモリアクセス許容度を超えていることに応じて、ＶＤＤを調節するために電圧レギュレータ１２１を制御し、これにより、プロセッサ１００全体の処理効率を向上させることができる。
【００１７】
プロセッサ１００は、プログラムスレッドのメモリレイテンシの監視を容易にするために、プロセッサコア１０２、キャッシュ１０３及びプロセッサ１００の他のモジュールでの操作に基づいて性能情報を監視するパフォーマンスモニタ１１５を含む。パフォーマンスモニタ１１５は、指定された時間における指定されたイベントの発生を識別して記録する、レジスタ、カウンタ及び他のモジュールのセットを含む。例えば、いくつかの実施形態において、パフォーマンスモニタは、キャッシュ１０３におけるキャッシュミス率（ＣＭＲ）を測定して記録する。キャッシュ１０３が複数のキャッシュを有するキャッシュ階層である場合には、パフォーマンスモニタ１１５は、複数のキャッシュのうち１つ以上のキャッシュの各々におけるＣＭＲを測定して記録することができる。例えば、いくつかの実施形態において、パフォーマンスモニタ１１５は、プロセッサコア１０２と１つ以上の他のプロセッサコアとの間で共有されるＬ２キャッシュにおけるＣＭＲを記録する。また、パフォーマンスモニタ１１５は、例えば、プロセッサコア１０２におけるサイクルあたりの命令（ＩＰＣ）率、メモリ制御装置１１０がメモリアクセス要求を受信する割合、メモリ制御装置１１０がメモリアクセス要求に応じてデータを送信する割合等の他の性能特性を測定して記録することができる。
【００１８】
ＡＰＭモジュール１２０は、メモリ制御装置１１０を含むプロセッサ１００の１つ以上のモジュールに供給された電力を、性能情報を用いて調節する電力制御モジュールである。特に、ＡＰＭモジュール１２０は、パフォーマンスモニタ１１５において記録された例えばＣＭＲ等の１つ以上の性能測定値を用いて、メモリ制御装置１１０におけるメモリアクセスレイテンシを識別する。性能測定値が対応する閾値を超え、メモリアクセスレイテンシが、実行中のプログラムスレッドのメモリアクセスレイテンシ許容度を超えたことを示す場合には、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に対してＶＤＤの大きさを増大させて、メモリ制御装置１１０に供給される電力を増大させる。これにより、メモリ制御装置１１０によるメモリアクセス要求の処理速度が向上して、メモリアクセスレイテンシを、プログラムスレッドのメモリアクセスレイテンシ許容度未満に低減させる。ＶＤＤの大きさが増大した後に所定時間が経過した後に、メモリ制御装置１１０において閾値数のメモリアクセス要求が処理された後に、又は、１つ以上の他の基準が満たされたことに基づいて、メモリアクセスレイテンシがプログラムスレッド許容度を下回る場合には、ＡＰＭモジュール１２０は、ＶＤＤの大きさを低減させる。
【００１９】
図示された実施例では、例示のため、プロセッサ１００は、メモリ制御装置１１０におけるメモリアクセスを監視するプリフェッチャ１１４を含む。プリフェッチャ１１４は、メモリアクセスにおけるパターンを識別し、これらのパターンに基づいて、プリフェッチ要求をメモリ制御装置１１０に発行して、間もなく必要になると予想されるデータをキャッシュ１０３にロードする。したがって、プロセッサコア１０２によって発行されたメモリアクセス要求が、プリフェッチャ１１４によって識別された（１つ以上の）パターンに従う限り、キャッシュ１０３においてメモリアクセス要求が満たされる可能性が高くなり、このため、ＣＭＲを低く維持することができる。このように、メモリ制御装置１１０に提供されたメモリアクセス要求の数は、少ないままである可能性が高く、これにより、メモリアクセスレイテンシについても同様に比較的低く維持することができる。プロセッサコア１０２がプリフェッチャ１１４によって識別された（１つ以上の）パターンに従わないいくつかのメモリアクセス要求を発行する場合には、キャッシュ１０３にてメモリアクセス要求が満たされない可能性が高くなり、ＣＭＲが高まる。キャッシュ１０３にて満たされなかったメモリアクセス要求はメモリ制御装置１１０に提供され、これにより、より多数のメモリアクセス要求をメモリ制御装置１１０が処理するのにかかる時間が増大して、メモリアクセスレイテンシが、プロセッサコア１０２にて実行するプログラムスレッドのメモリアクセス許容度を超える。したがって、ＣＭＲが所定の閾値を超えて高まる場合には、メモリアクセスレイテンシは、実行中のプログラムスレッドのメモリレイテンシ許容度を超える可能性が高い。メモリ制御装置１１０が、より多数のメモリアクセス要求をより迅速に処理することができるように、ＡＰＭモジュール１２０は、ＣＭＲが所定の閾値を超えたことに応じて、スレッドを実行するためのメモリレイテンシがスレッドを実行するためのメモリアクセスレイテンシ許容度を下回るように、ＶＤＤを増大させる。
【００２０】
いくつかの実施形態において、ＡＰＭモジュール１２０は、プロセッサ１００のモジュールのための電力管理ポリシーを実行し、これにより、電力管理ポリシーは、プロセッサ１００のための熱的制限及び他の物理的仕様に対するモジュールごとの割当電力の公称量を示す。また、電力管理ポリシーは、プロセッサ１００の異なるモジュールのための優先順位を設定することができ、かかるＡＰＭモジュール１２０は、１）各モジュールの性能特性、及び、２）各モジュールの優先順位に基づいて、各モジュールに供給される電力を割り当てる。したがって、例えば２つの異なるモジュールの性能特性が追加電力の要求を示す場合には、ＡＰＭモジュール１２０は、需要電力がプロセッサ１００に対して電力バジェット全体を超えさせるか否かを識別し、超える場合には、２つのモジュールのうち何れのモジュールに追加電力を割り当てるかを識別することができる。
【００２１】
実施例を用いて例示するため、いくつかの実施形態において、プロセッサ１００は、電力管理ポリシーに関連付けられており、これにより、プロセッサコア１０２の所要電力は、メモリ制御装置１１０の所要電力より優先される。いくつかのシナリオでは、パフォーマンスモニタ１１５に記憶された性能特性は、プロセッサコア１０２及びメモリ制御装置１１０の両方が供給電力の増大によって利益を得られることを示すことができる。例えば、プロセッサコア１０２が供給電力の増大によって利益を得られることを示すプロセッサコア１０２では、ＣＭＲは、ＩＰＣと同時に、メモリ制御装置１１０がＶＤＤの増大から利益を得られることを示すことができる。ＡＰＭモジュール１２０は、先ず、プロセッサ１００が、電力バジェット全体を超えることなく、プロセッサコア１０２に供給された電力及びメモリ制御装置１１０に供給された電力を両方とも増大させることができるか否かを識別し、増大させることが可能である場合には、各モジュールに供給された電力を増大させる。ＡＰＭモジュール１２０は、プロセッサコア１０２及びメモリ制御装置１１０の両方に供給された電力の増大によって電力バジェット全体を超えると識別した場合に、プロセッサコア１０２の電力管理ポリシーの優先順位によって求められたように、プロセッサコア１０２に供給される電力を増大させる。
【００２２】
図２は、いくつかの実施形態による、実行中のプログラムスレッドのメモリレイテンシ許容度に基づく図１のメモリ制御装置１１０への電力の配分を例示する図２００である。図２００のＸ軸は、時間に対応しており、Ｙ軸は、電圧レギュレータ１２１によってメモリ制御装置１１０に供給されたＶＤＤの大きさに対応している。図示された実施例では、時間２０１において、ＡＰＭモジュール１２０が、パフォーマンスモニタ１１５に記憶された情報に基づいて、キャッシュ１０３のＣＭＲが閾値を超えること（実行中のプログラムスレッドのメモリレイテンシ許容度が対応する閾値を超える可能性が高いことを示す）を識別する。したがって、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送り、ＶＤＤを、「Ｖ１」と表された公称大きさから「Ｖ２」と表される大きさへ増大させる。時間２０２において、ＶＤＤの大きさはＶ２に増大している。これにより、メモリ制御装置１１０は、待ち状態のメモリアクセス要求をより迅速に処理することが可能になる。
【００２３】
時間２０３において、ＡＰＭモジュール１２０は、キャッシュ１０３のＣＭＲが閾値を下回ったことを識別し、実行中のプログラムスレッドのメモリレイテンシ許容度をもはや上回っていないことを示す。これに応じて、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤの大きさをＶ２からＶ１へと低減させる。時間２０４までには、ＶＤＤの大きさがＶ１に低減しており、これにより、メモリ制御装置１１０の消費電力を低減させる。このように、図２に示された実施例において、プロセッサ１００は、メモリ制御装置１１０に供給された電力を増大させることによって、メモリレイテンシに敏感な実行中のプログラムスレッドの性能を向上させるが、プログラムスレッドのメモリレイテンシ許容度を超えた可能性が高い場合には、供給電力を増大させることのみによって、メモリ制御装置の消費電力を制限する。
【００２４】
図３は、いくつかの実施形態による、キャッシュミス率及び命令処理速度に基づくメモリ制御装置１１０への電力の配分を示す図３００である。図３００のＸ軸は、時間に対応しており、Ｙ軸は、電圧レギュレータ１２１によってメモリ制御装置１１０に供給されたＶＤＤの大きさに対応している。図示された実施例では、時間３０１において、ＡＰＭモジュール１２０が、パフォーマンスモニタ１１５に記憶された情報に基づいて、キャッシュ１０３のＣＭＲが閾値を超えることを識別する。したがって、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤを「Ｖ１」と表された公称大きさから「Ｖ２」と表された大きさへ増大させる。時間３０２において、ＶＤＤの大きさはＶ２に増大している。これにより、メモリ制御装置１１０は、待ち状態のメモリアクセス要求をより迅速に処理することが可能になる。
【００２５】
時間３０３において、ＡＰＭモジュール１２０は、プロセッサコア１０２におけるＩＰＣ率が閾値を下回ったことを識別する。さらに、ＡＰＭモジュール１２０は、ＶＤＤの大きさをＶ２に維持しながら追加電力を供給することによって、プロセッサ１００が電力バジェット全体を超えることを識別する。また、ＡＰＭモジュール１２０は、電力管理ポリシーに基づいて、プロセッサコア１０２の電力需要がメモリ制御装置１１０の電力需要より優先さていれることを識別する。これに応じて、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤの大きさをＶ２からＶ１に低減させる。時間３０４までには、ＶＤＤの大きさがＶ１に低減しており、これにより、メモリ制御装置１１０の消費電力を低減させる。したがって、ＡＰＭモジュール１２０は、（例えば、プロセッサコア１０２に供給される電圧の大きさを増大させることによって）プロセッサコア１０２に供給される電力を増大させることができる。これにより、プロセッサコア１０２が命令処理をより迅速に実行して、プロセッサ１００に電力バジェット全体を超えさせることなく、そのＩＰＣを低減させることが可能になる。
【００２６】
いくつかの実施形態において、ＡＰＭモジュール１２０は、対応する閾値に対するＣＭＲの関係に基づいて、ＶＤＤの大きさを、いくつかの潜在的な大きさの何れかに設定することができる。ＣＭＲが１つの閾値を超えた場合には、実行スレッドのメモリレイテンシ許容度が、対応する量だけ超えたことを示している。図４は、いくつかの実施形態による、複数の閾値に対するキャッシュミス率に基づくメモリ制御装置１１０への電力の配分を示す図４００である。図４００のＸ軸は、時間に対応しており、Ｙ軸は、電圧レギュレータ１２１によってメモリ制御装置１１０に供給されたＶＤＤの大きさに対応している。図示された実施例では、時間４０１において、ＡＰＭモジュール１２０は、パフォーマンスモニタ１１５に記憶された情報に基づいて、キャッシュ１０３のＣＭＲが「閾値１」と表された閾値を超えたこと（実行中のプログラムスレッドのメモリレイテンシ許容度が第１の量だけ超えたことを示す）を識別する。したがって、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、「Ｖ１」と表された公称大きさから「Ｖ２」と表された増大した大きさへＶＤＤを増大させる。時間４０２において、ＶＤＤの大きさがＶ２に増大しており、これにより、メモリ制御装置１１０は、待ち状態のメモリアクセス要求をより迅速に処理することが可能になる。
【００２７】
時間４０３において、ＡＰＭモジュール１２０は、キャッシュ１０３のＣＭＲが「閾値２」と表される別の閾値を超えたことを識別する。閾値２は、閾値１より大きく、実行中のプログラムスレッドのメモリレイテンシ許容度が、閾値１に対応する第１の量より大きい第２の量だけ超えたことを示している。したがって、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、Ｖ２から「Ｖ３」と表された大きさにＶＤＤを増大させる。時間４０４において、ＶＤＤの大きさはＶ３に増大しており、これにより、メモリ制御装置１１０は、待ち状態のメモリアクセス要求をより迅速に処理することが可能になる。時間４０５において、ＡＰＭモジュール１２０は、キャッシュ１０３のＣＭＲが閾値２を下回ったことを識別する。これに応じて、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤの大きさをＶ３からＶ２に低減させる。
【００２８】
いくつかの実施形態において、ＡＰＭモジュール１２０は、例えばメモリ帯域幅等の他のメモリアクセス特性に基づいて、ＶＤＤ電圧を調節することができる。例えば、パフォーマンスモニタ１１５は、キャッシュ１０３からのメモリアクセス要求によって必要とされたメモリ帯域幅の量を示す情報を監視して、記憶することができる。時間４０５において、メモリアクセス要求が用いるメモリ帯域幅の量が閾値を超えたことを示す情報に応じて、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤをＶ２からＶ３の大きさに増大させる。
【００２９】
さらに、いくつかの実施形態において、ＡＰＭモジュールは、キャッシュ１０３のキャッシュミス率以外の基準、又は、当該キャッシュミス率に加わる基準に基づいて、実行中のプログラムスレッドのメモリレイテンシ許容度を超えたことを識別することができる。例えば、いくつかの実施形態において、ＡＰＭモジュール１２０は、メモリ制御装置１１０のバッファに記憶されたメモリアクセス要求の数に基づいて、メモリ制御装置１１０のインタフェースで受信した幾つかのメモリアクセス要求に基づいて、又は、メモリ制御装置１１０がメモリアクセス要求に対して発行した応答の割合に基づく等して、実行中のプログラムスレッドのメモリレイテンシ許容度を識別することができる。
【００３０】
図５は、いくつかの実施形態による、プロセッサのメモリ制御装置への電力の配分方法５００のフロー図である。方法は、説明の目的で、図１のプロセッサ１００における例示的な実装に関して記載されている。ブロック５０２において、パフォーマンスモニタ１１５は、キャッシュ１０３のキャッシュミス率を監視して記録する。ブロック５０４において、ＡＰＭモジュールは、キャッシュ１０３のＣＭＲが閾値を超えるか否かを識別する。超えない場合には、方法フローはブロック５０６に移行し、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に対して、ＶＤＤが変化することを示さない。したがって、電圧レギュレータ１２１は、ＶＤＤを公称大きさに維持する。
【００３１】
ブロック５０４において、キャッシュ１０３のＣＭＲが閾値を超えたことをＡＰＭモジュール１２０が識別した場合には、方法フローはブロック５０８に移行し、ＡＰＭモジュール１２０は、プロセッサ１００の電力管理ポリシーの下、メモリ制御装置１１０に配分される利用可能な電力が存在するか否かを識別する。（例えば、利用可能な全ての電力が電力管理ポリシーの下でメモリ制御装置１１０よりも高い優先順位を有するプロセッサ１００モジュールに配分されているため）存在しない場合には、方法フローはブロック５０６に移行し、ＶＤＤは、電圧レギュレータ１２１によってその公称大きさに維持される。ブロック５０８において、配分するために利用可能な電力が存在する場合には、方法フローはブロック５１０に移行し、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤの大きさを増大させる。
【００３２】
方法フローはブロック５１２に進み、パフォーマンスモニタ１１５は、キャッシュ１０３のＣＭＲを継続して監視する。ブロック５１４において、ＡＰＭモジュール１２０は、１）キャッシュ１０３のＣＭＲが閾値を下回ったか否か、又は、２）ブロック５１０においてメモリ制御装置１１０に配分された追加電力を、電力管理ポリシーの下でより高い優先順位を有するプロセッサ１００のモジュールが必要としているか否かを識別する。これらの何れの条件が真でない場合には、方法フローはブロック５１２に戻り、ＶＤＤは、ブロック５１０において設定された大きさで維持される。これらの条件の何れかが真である場合には、方法フローはブロック５１６に移り、ＡＰＭモジュール１２０は、電圧レギュレータ１２１に信号を送って、ＶＤＤをその公称大きさへと低減させる。方法フローは、ブロック５０２に戻る。
【００３３】
いくつかの実施形態において、上述した装置及び技術は、１つ以上の集積回路（ＩＣ）装置（集積回路パッケージ又はマイクロチップとも呼ばれる）を含むシステムに実装される。電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが、これらのＩＣ装置の設計及び製造に利用されてもよい。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表現される。１つ以上のソフトウェアプログラムは、コンピュータシステムによって実行可能なコードを備えており、当該コンピュータシステムが、１つ以上のＩＣ装置の回路を製造する製造システムを設計又は適合するプロセスの少なくとも一部を実行するように当該回路を表すコードに作用するように、当該コンピュータシステムを処理する。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、計算システムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣ装置の設計又は製造の１つ以上のフェーズを表すコードは、同一の又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、これらの媒体からアクセスされてもよい。
【００３４】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するのに用いられる間に当該コンピュータシステムによるアクセスが可能な任意の記憶媒体又は記憶媒体の組み合わせを含んでもよい。かかる記憶媒体は、光学媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ若しくは磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）若しくはキャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）若しくはフラッシュメモリ）、又は、微小電子機械システム（ＭＥＭＳ）を用いた記憶媒体を含むことができるが、これらに限定されない。コンピュータ可読記憶媒体は、計算システムに搭載されるもの（例えば、システムＲＡＭ又はＲＯＭ）であってもよいし、計算システムに固着されるもの（例えば、磁気ハードドライブ）であってもよいし、計算システムに取り外し可能に取り付けられるもの（例えば、光ディスク又はユニバーサルシリアルバス（ＵＳＢ）を用いたフラッシュメモリ）であってもよいし、有線又は無線ネットワークを介してコンピュータシステムに接続されるもの（例えば、ネットワークアクセス可能記憶装置（ＮＡＳ））であってもよい。
【００３５】
図６は、いくつかの実施形態による、１つ以上の実施態様を実装するＩＣ装置の例示的な設計及び製造方法６００を示すフロー図である。上述したように、以下の各プロセスのために生成されたコードは、対応する設計ツール又は製造ツールによるアクセス又は利用のために、非一時的なコンピュータ可読記憶媒体に記憶され又は具現化される。
【００３６】
ブロック６０２において、ＩＣ装置の機能仕様が生成される。機能仕様（よくマイクロアーキテクチャ仕様（ＭＡＳ）と呼ばれる）は、Ｃ、Ｃ＋＋、システムＣ、Ｓｉｍｕｌｉｎｋ若しくはＭＡＴＬＡＢを含む様々なプログラミング言語又はモデリング言語の何れかによって表されてもよい。
【００３７】
ブロック６０４において、機能仕様を用いて、ＩＣ装置のハードウェアを表すハードウェア記述コードが生成される。いくつかの実施形態において、ハードウェア記述コードは、ＩＣ装置の回路の形式的記述及び設計のための様々なコンピュータ言語、仕様言語又はモデリング言語の何れかを含む少なくとも１つのハードウェア記述言語（ＨＤＬ）を用いて表される。生成されたＨＤＬコードは、通常、ＩＣ装置の回路の操作、回路の設計及び構成を表し、シミュレーションを通じてＩＣ装置の正しい操作を検証するテストを行う。ＨＤＬの実施例は、アナログＨＤＬ（ＡＨＤＬ）、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ  ＨＤＬ及びＶＨＤＬを含む。同期式デジタル回路を実装するＩＣ装置では、ハードウェア記述コードは、同期デジタル回路の操作を抽象的に表現するレジスタ転送レベル（ＲＴＬ）コードを含んでもよい。他のタイプの回路では、ハードウェア記述コードは、回路の操作を抽象的に表現する動作レベルコードを含んでもよい。ハードウェア記述コードによって表されたＨＤＬモデルは、設計検証をパスするために、通常、１以上の回数のシミュレーション及びデバッギングを受ける。
【００３８】
ハードウェア記述コードで表された設計の検証後に、ブロック６０６において、合成ツールを用いてハードウェア記述コードを合成して、ＩＣ装置の回路の初期物理的実装を表現又は定義するコードを生成する。いくつかの実施形態において、合成ツールは、回路装置インスタンス（例えば、ゲート、トランジスタ、レジスタ、コンデンサ、インダクタ、ダイオード等）と、回路装置インスタンス間のネット又は接続と、を含む１つ以上のネットリストを生成する。代替的に、合成ツールを利用することなく、ネットリストの全て又は一部をを手動で生成してもよい。ハードウェア記述コードと同様に、１つ以上のネットリストの最終セットが生成される前に、ネットリストは、１つ以上のテスト及び検証プロセスを受けてもよい。
【００３９】
代替的に、ＩＣ装置の回路図を下書きするために、回路図エディタツールを利用してもよく、その後に、結果物としての回路図を保存し、（コンピュータ可読媒体に記憶された）１つ以上のネットリストを生成するために、回路図入力ツールが用いられてもよい。保存された回路図は、その後、テスト及び検証のための１以上の回数のシミュレーションを受けてもよい。
【００４０】
ブロック６０８において、１つ以上のＥＤＡツールは、ブロック６０６において生成されたネットリストを用いて、ＩＣ装置の回路の物理的なレイアウトを表すコードを生成する。このプロセスは、例えば、ＩＣ装置の回路の各要素の位置を決定又は固定するための、ネットリストを利用する配置ツールを含むことができる。さらに、ルーティングツールは、配置プロセスを構築し、（１つ以上の）ネットリストに従って、回路要素の接続に必要なワイヤを追加及びルーティングする。結果物としてのコードは、ＩＣ装置の三次元モデルを表す。コードは、例えばグラフィックデータベースシステムＩＩ（ＧＤＳＩＩ）フォーマット等のデータベースファイルフォーマットで表されてもよい。このフォーマットのデータは、通常、形状、テキストラベル及び回路レイアウトに関する他の情報を階層形式で表す。
【００４１】
ブロック６１０において、物理的なレイアウトコード（例えば、ＧＤＳＩＩコード）が製造設備に（例えば、マスクワークを通じて）提供される。製造設備では、物理的なレイアウトコードを用いて製造設備の製造ツールを構成又は適合して、ＩＣ装置を製造する。すなわち、物理的なレイアウトコードは、１つ以上のコンピュータシステムにプログラミングされてもよく、コンピュータシステムは、製造設備のツールの操作若しくは当該製造設備で実行される製造動作の全て又は一部を制御してもよい。
【００４２】
いくつかの実施形態において、上述した技術の特定の実施態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され又はは有形的に具現化された１つ以上の実行可能命令のセットを含む。ソフトウェアは、上述した技術の１つ以上の実施態様を実行するために、１つ以上のプロセッサによる実行時に当該１つ以上のプロセッサの処理を行う命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置や、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）又は（１つ以上の）他の不揮発性メモリ装置を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈され若しくは実行可能な他の命令フォーマットであってもよい。
【００４３】
上述した全てのアクティビティ又は要素の全てが必要とされるわけではなく、特定のアクティビティ又は装置の一部が必要とされなくてもよく、１つ以上の更なるアクティビティが実行されてもよいし、他の要素が含まれてもよいことに留意されたい。さらに、記載したアクティビティの順序は、必ずしも実行時の順序というわけではない。また、概念について具体的な実施形態を参照して記載した。しかし、以下の特許請求の範囲に示すとおり本開示の範囲を逸脱することなく様々な修正及び変更を加えることが可能であることが当業者には理解されるであろう。したがって、本明細書及び図面は、限定的というよりも説明的な意味で考慮されるべきであり、かかる修正の全ては、本開示の範囲内に含まれることが意図される。
【００４４】
利益、他の利点、及び、課題の解決手段について具体的な実施形態を参照して記載した。しかし、利益、利点、課題の解決手段、及び、利益、利点、課題の解決手段を生じさせ又はより顕著になり得る任意の（１つ以上の）特徴は、特許請求の範囲の一部又は全ての重大、必要若しくは必須の特徴とみなされるべきではない。さらに、上述した特定の実施形態は、説明のみを目的としており、本開示の発明は、本明細書の教示の利益を受ける当業者には明らかな方法であって、異なるが同等の方法で変更及び実施されてもよい。本明細書において示された構造又は設計の詳細に対して、以下の特許請求の範囲以外の限定を加えることを意図しない。したがって、上述したような特定の実施形態を変更又は修正することができ、また、かかる変形形態の全ては、開示された発明の範囲内であると考えられることが明白である。したがって、本明細書に求められる保護は、以下の特許請求の範囲に示すとおりである。
【図１】
2017526039.tif 000003
【図２】
2017526039.tif 000004
【図３】
2017526039.tif 000005
【図４】
2017526039.tif 000006
【図５】
2017526039.tif 000007
【図６】
2017526039.tif 000008
【国際調査報告】
2017526039.tif 000009
2017526039.tif 000010
2017526039.tif 000011