(57)【要約】【課題】マルチプロセッサの全体の消費電力と消費エネルギーとのうちの少なくとも一方を抑制する。【解決手段】本発明の一例のマルチプロセッサ制御装置は、プロセッサＰＵ0〜ＰＵnで実行される各プログラムの性能制約を満たす範囲で、プロセッサＰＵ0〜ＰＵnの合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「プロセッサＰＵ0〜ＰＵnから共有リソースへ発行されるリクエストの優先度」を決定し、各プログラムの性能制約を満たす範囲で、合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「プロセッサＰＵ0〜ＰＵnの周波数と電源電圧とのうちの少なくとも一方」を決定する。【選択図】      図１
2008287592.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサで実行される各プログラムの性能制約を満たす範囲で、前記複数のプロセッサの合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「前記複数のプロセッサから前記複数のプロセッサの共有リソースへ発行されるリクエストの優先度」を決定し、前記各プログラムの性能制約を満たす範囲で、前記合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「前記複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方」を決定する協調制御手段と、
前記協調制御手段によって決定された優先度に応じて、前記複数のプロセッサからのリクエストを前記共有リソースへ発行する第１制御手段と、
前記協調制御手段によって決定された周波数と電源電圧とのうちの少なくとも一方に応じて、前記複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方を制御する第２制御手段と
を具備するマルチプロセッサ制御装置。
【請求項２】
請求項１記載のマルチプロセッサ制御装置において、
前記協調制御手段は、緊急性の高いプログラムを実行するプロセッサからのリクエストの優先度を、緊急性の低いプログラムを実行するプロセッサからのリクエストの優先度よりも高くすることを特徴とするマルチプロセッサ制御装置。
【請求項３】
請求項２記載のマルチプロセッサ制御装置において、
前記協調制御手段は、リクエストの優先度を高くしたプロセッサの周波数と電源電圧とのうちの少なくとも一方を、優先度制御を行わなかった場合と比べて低くすることを特徴とするマルチプロセッサ制御装置。
【請求項４】
請求項３記載のマルチプロセッサ制御装置において、
前記協調制御手段は、
前記複数のプロセッサから前記共有リソースへの実際の競合の状態を監視し、前記実際の競合の状態が、前記優先度となるようにフィードバック制御を実行し、
前記各プログラムの進行状態を監視し、前記各プログラムを実行するそれぞれのプロセッサについて、前記各プログラムの進行状態が性能予測モデルに基づいて予測された予測結果より早く終了しそうな場合に、周波数と電源電圧とのうちの少なくとも一方を低下させ、前記各プログラムの進行状態が前記予測結果に間に合わなくなりそうな場合に、周波数と電源電圧とのうちの少なくとも一方を増加させるフィードバック制御を行う
ことを特徴とするマルチプロセッサ制御装置。
【請求項５】
請求項３記載のマルチプロセッサ制御装置において、
前記協調制御手段は、
前記複数のプロセッサの周波数のいずれもが目標範囲に含まれるように前記複数のプロセッサからのリクエストの優先度を制御することを特徴とするマルチプロセッサ制御装置。
【請求項６】
複数のプロセッサで実行される各プログラムの性能制約を満たす範囲で、前記複数のプロセッサの合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「前記複数のプロセッサから前記複数のプロセッサの共有リソースへ発行されるリクエストの優先度」及び「前記複数のプロセッサの周波数と電源電圧とのうちの少なくとも一つ」を決定する制御アルゴリズムを実行し、
前記制御アルゴリズムで決定された優先度に応じて、前記複数のプロセッサからのリクエストを前記共有リソースへ発行するとともに、前記制御アルゴリズムで決定された周波数と電源電圧とのうちの少なくとも一方に応じて、前記複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方を制御する
ことを特徴とするマルチプロセッサ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを制御するマルチプロセッサ制御装置及び方法に関する。
【背景技術】
【０００２】
従来から、制約を持つプログラムの消費電力削減手法として、制約を満たす範囲で、できる限り低い周波数・電源電圧を用いプログラムを実行するよう、周波数・電源電圧を制御する手法が提案されている。
【０００３】
ある従来の手法では、プログラムのプロファイル情報に基づき周波数・電源電圧を決定する（第１従来例）。他の従来の手法では、プログラム実行時の情報を用いて、制約を満たしていない場合に、周波数・電源電圧を上げて制約を満たすよう制御し、逆に性能に余裕がある場合に、周波数・電源電圧を下げるなどのフィードバック制御により周波数・電源電圧を決定する（第２従来例）。
【０００４】
なお、非特許文献１では、キャッシュを分割するのではなく、各プロセッサの動作周波数及び電源電圧を動的電源電圧／周波数制御（Dynamic Voltage/Frequency Scaling：ＤＶＦＳ）手法によって制御することにより、公平さ（フェアネス）を向上し、高性能化、及び低消費電力あるいは低消費エネルギーを実現する技術が提案されている。
【非特許文献１】近藤正章、中村宏、「ＣＭＰ向け動的電源電圧・周波数制御手法の提案」、情報処理学会研究報告、IPSJ SIG Technical Reports、情報研報  Vol.2005，No.56、２００５年５月３１日発行、２５頁、社団法人  情報処理学会
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＣＭＰにおいては、一般的に、例えばメモリバスなどのように複数のプロセッサコアに共有されるリソースが存在する。
【０００６】
そのため、各プロセッサコア上で実行されるプログラムの性能は他のプロセッサコア上で同時に実行されるプログラムの性質に大きく依存し、リソース競合が生じると性能が大きく低下してしまう場合がある。
【０００７】
この場合、上述した第１従来例及び第２従来例では、性能が低下したプログラムの周波数・電源電圧を上げるなどして対処するのみであり、他のプログラムとのリソース競合の影響を考慮した制御は行われないため、エネルギー効率がよくない場合がある。
【０００８】
本発明は、上記実情に鑑みてなされたもので、各プロセッサで実行されるプログラムの共有リソース競合の影響を考慮しつつ、マルチプロセッサ全体の消費電力と消費エネルギーとのうちの少なくとも一方を抑制する制御装置及び方法を提供する。
【課題を解決するための手段】
【０００９】
上記課題は、複数のプロセッサで実行される各プログラムの性能制約を満たす範囲で、複数のプロセッサの合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「複数のプロセッサから複数のプロセッサの共有リソースへ発行されるリクエストの優先度」を決定し、各プログラムの性能制約を満たす範囲で、合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方」を決定する協調制御手段と、協調制御手段によって決定された優先度に応じて、複数のプロセッサからのリクエストを共有リソースへ発行する第１制御手段と、協調制御手段によって決定された周波数と電源電圧とのうちの少なくとも一方に応じて、複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方を制御する第２制御手段、とを具備するマルチプロセッサ制御装置により解決される。
【００１０】
また、上記課題は、複数のプロセッサで実行される各プログラムの性能制約を満たす範囲で、複数のプロセッサの合計消費電力と合計消費エネルギーとのうちの少なくとも一方を抑制する「複数のプロセッサから複数のプロセッサの共有リソースへ発行されるリクエストの優先度」及び「複数のプロセッサの周波数と電源電圧とのうちの少なくとも一つ」を決定する制御アルゴリズムを実行し、制御アルゴリズムで決定された優先度に応じて、複数のプロセッサからのリクエストを共有リソースへ発行するとともに、制御アルゴリズムで決定された周波数と電源電圧とのうちの少なくとも一方に応じて、複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方を制御するプロセッサ制御方法により解決される。
【発明の効果】
【００１１】
本発明によれば、各プロセッサで実行されるプログラムの共有リソース競合の影響を考慮しつつ、この競合による性能への影響をモデル化することにより、マルチプロセッサ全体の消費電力と消費エネルギーとのうちの少なくとも一方を抑制することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１３】
（第１の実施の形態）
本実施の形態においては、例えば複数のプロセッサコアを１チップに搭載したチップマルチプロセッサ（Chip Multi Processor：ＣＭＰ）を制御する装置について説明する。しかしながら、この制御装置の制御対象は必ずしもＣＭＰである必要はなく、例えば複数のチップで構成されるマルチプロセッサシステムなどでもよい。
【００１４】
本実施の形態においては、各プロセッサコアで実行されるプログラムの共有リソース競合の影響を考慮しつつ、この競合による性能への影響をモデル化することにより、消費電力と消費エネルギーとのうちの少なくとも一方を抑制するマルチプロセッサの制御装置について説明する。なお、以下においては、消費電力を抑制する場合を例として説明するが、消費エネルギーの抑制も同様の制御手法を用いることで可能である。
【００１５】
本実施の形態においては、共有リソース競合による性能への影響を優先度制御により調整し、消費電力の抑制効果を高めることを可能とする。このために、本実施の形態に係るマルチプロセッサは、優先度制御と周波数・電源電圧制御を協調して行い、全体としての消費電力が最小となるように優先度／周波数・電源電圧を制御する。
【００１６】
図１は、本実施の形態に係るマルチプロセッサ制御装置の構成の一例を示すブロック図である。
【００１７】
マルチプロセッサ１は、複数のプロセッサコアＰＵ0〜ＰＵnを１チップ上に搭載している。プロセッサコアＰＵ0〜ＰＵnで実行されるプログラムは性能制約（例えば、何秒以内に終了しなければいけないなどのように実行時間の上限が決まっているなど：レイテンシ（リアルタイム）制約）を持つ。
【００１８】
プロセッサコアＰＵ0〜ＰＵnと主記憶装置２とは、転送管理部３及びメモリバス４により接続されている。転送管理部３は、例えばＭＭＵ（Memory Management Unit）３ａ、バスコントローラ３ｂ、アクセスキュー３ｃを具備する。
【００１９】
本実施の形態において、マルチプロセッサ１における消費電力の抑制を行うためのマルチプロセッサ制御装置は、アクセスキュー３ｃ、ＦＶＰ協調制御部５、優先度制御部６、周波数・電源電圧制御部７を具備する。
【００２０】
マルチプロセッサ１の各プロセッサコアＰＵ0〜ＰＵnに対しては、個別に周波数、電源電圧を制御可能である。各プロセッサコアＰＵ0〜ＰＵnから発行された主記憶装置２へのアクセスリクエストは、どのプロセッサコアから発行されたか判別可能であり、発行元のプロセッサコアに応じた優先度にしたがって制御される。なお、本実施の形態において、優先度とは、各プロセッサコアＰＵ0〜ＰＵnからのアクセスが競合したときの待ち時間を、各プロセッサコアＰＵ0〜ＰＵnに分配する割合とする。
【００２１】
マルチプロセッサ制御装置は、マルチプロセッサ１について、各プロセッサコアＰＵ0〜ＰＵnの周波数・電源電圧とリクエストの優先度を協調して制御する。
【００２２】
プロセッサコアＰＵ0〜ＰＵnは、転送管理部３を介し、共有リソースであるメモリバス４、さらには主記憶装置２に接続されている。
【００２３】
ＦＶＰ協調制御部５は、メモリバス４の競合の状態や、各プロセッサコアＰＵ0〜ＰＵnで動作しているプログラム（アプリケーション、プロセス）の情報に基づいて、性能制約を満たしつつ各プログラムが実行され、かつ全体の消費電力を抑制するために、各プロセッサコアＰＵ0〜ＰＵnのリクエストの優先度と周波数・電源電圧とを協調して制御し、制御信号をそれぞれ優先度制御部６、周波数・電源電圧制御部７に与える。ＦＶＰ協調制御部５は、リクエストの優先度を高くしたプロセッサコアの周波数と電源電圧とのうちの少なくとも一方を、優先度制御を行わなかった場合と比較して低下させる。優先度を高くすることにより、優先度制御を行わなかった場合と比べて周波数と電源電圧とを下げることができ、低電力化を実現することができる。
【００２４】
優先度制御部６は、ＦＶＰ協調制御部５から受けた制御信号に基づいて、主記憶装置２に対するアクセスリクエストの優先度を制御する。
【００２５】
周波数・電源電圧制御部７は、ＦＶＰ協調制御部５から受けた制御信号に基づいて、各プロセッサコアＰＵ0〜ＰＵnの周波数と電源電圧とのうち少なくとも一方（周波数のみ、電源電圧のみ、あるいは周波数と電源電圧の双方）を制御する。
【００２６】
以下に、本実施の形態に係るマルチプロセッサ制御装置によって行われる制御方法について説明する。
【００２７】
図２は、プログラムの性能制約を満たす状況における、プロセッサコアＰＵ0の消費電力、プロセッサコアＰＵ1の消費電力、プロセッサコアＰＵ0及びＰＵ1の消費電力の合計のそれぞれと、リクエストの優先度との関係の一例を示すグラフである。
【００２８】
この図２において、優先度は、プロセッサコアＰＵ0からのリクエストと、プロセッサコアＰＵ1からのリクエストとの間の待ち時間の配分の割合を表す。
【００２９】
優先度０は、プロセッサコアＰＵ0からのリクエストが、プロセッサコアＰＵ1からのリクエストの全てを追い抜くレベルを表す。
【００３０】
優先度０．５は、プロセッサコアＰＵ0からのリクエストと、プロセッサコアＰＵ1からのリクエストとの間で、待ち時間が同じレベルを表す。
【００３１】
優先度１は、プロセッサコアＰＵ1からのリクエストが、プロセッサコアＰＵ0からのリクエストの全てを追い抜くレベルを表す。
【００３２】
優先度が０に向うほど、プロセッサコアＰＵ0からのリクエストが、プロセッサコアＰＵ1からのリクエストより優先される。
【００３３】
逆に、優先度が１に向うほど、プロセッサコアＰＵ1からのリクエストが、プロセッサコアＰＵ0からのリクエストより優先される。
【００３４】
例えば、プロセッサコアＰＵ0の優先度が高く、プロセッサコアＰＵ1の優先度が低い場合、プロセッサコアＰＵ0から共有リソースへのリクエストは、プロセッサコアＰＵ1からのリクエストを追い抜く。このため、プロセッサコアＰＵ0のプログラムは、プロセッサコアＰＵ1のプログラムよりも効率的に実行可能であり、その分、性能制約を満たす範囲でプロセッサコアＰＵ0の周波数・電源電圧を低下させることができる。したがって、プロセッサコアＰＵ0の優先度が高い場合、プロセッサコアＰＵ0の消費電力を低下させることができる。
【００３５】
また、プロセッサコアＰＵ1の優先度がプロセッサコアＰＵ0の優先度よりも低い場合、プロセッサコアＰＵ1から共有リソースへのリクエストは、プロセッサコアＰＵ0からのリクエストに追い抜かれる。このため、プロセッサコアＰＵ1のプログラムは、プロセッサコアＰＵ0のプログラムよりも効率的に実行することが困難となり、その分、性能制約を満たすために、プロセッサコアＰＵ1の周波数・電源電圧を上げることが必要になる。したがって、プロセッサコアＰＵ1の優先度が低い場合、プロセッサコアＰＵ1の消費電力が増加する。
【００３６】
この図２においては、プロセッサコアＰＵ1で実行されるプログラムの方がプロセッサコアＰＵ0で実行されるプログラムよりも緊急性が高く、プロセッサコアＰＵ1の方がプロセッサコアＰＵ0よりも高い処理速度を必要とし、消費電力が大きい。そのため、プロセッサコアＰＵ1についての優先度と消費電力の関係の変化率の方が、プロセッサコアＰＵ0についての優先度と消費電力の関係の変化率よりも大きくなっている。
【００３７】
この図２より、プロセッサコアＰＵ1の優先度をプロセッサコアＰＵ0の優先度よりも高くすることによって、合計の消費電力を抑制することができることがわかる。
【００３８】
本実施の形態では、複数のプロセッサコアＰＵ0〜ＰＵnから共有リソースへのアクセスが競合した場合に、緊急性の高いプログラムからのアクセスを優先させる。これにより、優先度の高いプログラムを実行するプロセッサコアについては、共有リソースに対する待ち状態が短縮されるため、このプロセッサコアの速度（周波数・電源電圧）を低下させることが可能となる。なお、周波数（＝処理速度）は電源電圧にほぼ比例する。消費電力は電源電圧の２乗にほぼ比例する。
【００３９】
上記図２の状態においては、消費電力の小さい側のプロセッサコアＰＵ0の優先度を低くし、消費電力の大きい側のプロセッサコアＰＵ1の優先度を高くするとともに、各プロセッサコアＰＵ0，ＰＵ1についてプログラムの性能制約を満たす範囲で周波数・電源電圧を抑制することにより、プロセッサコアＰＵ0，ＰＵ1の消費電力の合計を抑制することが可能である。
【００４０】
消費電力の合計が最小になる優先度が、「最適な優先度」として制御に用いられる。優先度制御部６は、この最適な優先度となるように、実際のリクエストの発行を制御する。
【００４１】
以下に、優先度と周波数・電源電圧とを制御する制御アルゴリズムの具体例について説明する。なお。この制御アルゴリズムは一例であり、他の手法を用いることもできる。
【００４２】
共有リソースの優先度は、例えば図３に示すように、各プロセッサコアＰＵ0〜ＰＵnからのメモリリクエストを保持するリクエストキュー３ｃがある場合には、優先度の高いプロセッサコアからのリクエストは先に発行された優先度の低い他のプロセッサコアからのリクエストを何個分か追い越して発行することを許可するなどの手法により制御可能である。
【００４３】
共有リソースの競合が、各プロセッサコアＰＵ0〜ＰＵnの性能に与える影響は、各プログラムの性能制約（例えばレイテンシ制約など）、各プログラムの共有リソースへのアクセス回数、各プログラムの命令実行数、共有リソースの性能（例えば単独実行時の共有リソースアクセスによる待ち時間など）をパラメータとした性能予測モデルを構築し、定式化することができる。これにより、マルチプロセッサ１全体の消費電力が最小となる共有リソースの優先度を求めることができる。
【００４４】
優先度及び各プロセッサコアＰＵ0〜ＰＵnの周波数・電源電圧は、例えばタイムインターバルを用いた手法により制御可能である。
【００４５】
図４は、周波数・電源電圧調整インターバル（DVFS_interval）ごとに周波数・電源電圧を調整し、優先度調整インターバル（優先度調整interval）ごとに優先度を調整する制御手法の一例を示す図である。
【００４６】
ＦＶＰ協調制御部５は、周波数・電源電圧調整インターバル間隔で、各プロセッサコアＰＵ0〜ＰＵnのプログラムの性能をチェックし、性能制約を満たすために必要な性能が達成されているかを監視し、達成されていないと判断されたプログラムを実行するプロセッサコアについて、周波数と電源電圧とのうち少なくとも一方をアップするなどのフィードバック制御を実行する。
【００４７】
すなわち、ＦＶＰ協調制御部５は、プログラムの進行状態を周波数・電源電圧調整インターバル間隔でチェックし、性能制約の時刻より早く終了しそうな場合に周波数・電源電圧の少なくとも一方を低下（例えば−１）させ、進行状態が性能制約の時刻に間に合いそうにない場合に周波数・電源電圧の少なくとも一方を増加（例えば＋１）する。なお、一度、周波数・電源電圧を変更すると、Silent_intervalの間は周波数・電源電圧を変更しないとする。
【００４８】
さらに、ＦＶＰ協調制御部５は、優先度調整インターバル間隔で、各プロセッサコアＰＵ0〜ＰＵnから共有リソースへのリクエストの実際の競合の状態を監視し、最適と判断された優先度を満たすように、優先度についてフィードバック制御を実行する。
【００４９】
すなわち、ＦＶＰ協調制御部５は、上記図２から定まる最適な優先度（最適な待ち合わせの分配）と実際の待ち合わせの分配とを比較し、実際の待ち合わせの分配が、最適な優先度となるように制御する。
【００５０】
一般的に、最低限満たすべき性能制約が存在するプログラムを実行する場合、この性能制約を満たす範囲であれば、低い周波数・電源電圧を用いてプログラムを実行することで消費電力を抑制することができる。
【００５１】
従来のマルチプロセッサでは、メモリバスなどの共有リソースでアクセス競合が発生すると、プログラムの性能低下が生じ、この性能低下を補うために、プロセッサコアをより高い周波数・電源電圧で動作させることが必要になり、消費電力の増大を招く場合がある。
【００５２】
これに対して、本実施の形態においては、ＦＶＰ協調制御部５が、各プロセッサコアＰＵ0〜ＰＵnで実行しているプログラムの状態に応じて、共有リソースの使用率を優先度制御により適切に制御し、また、この優先度制御に併せて、各プロセッサコアＰＵ0〜ＰＵnの周波数・電源電圧を調整する。これにより、プログラムの性能制約を満たしつつマルチプロセッサ１全体での消費電力が抑制される。
【００５３】
上記のようなマルチプロセッサ制御装置を用いた場合の効果について以下に説明する。
【００５４】
本実施の形態においては、消費電力の大きいプロセッサコアによる共有リソースへのアクセスリクエストの優先度を、消費電力の小さいプロセッサコアによる共有リソースへのアクセスリクエストの優先度よりも高くすることにより、共有リソースへのアクセスが競合する場合であっても消費電力の大きいプロセッサコアの性能が低下することを緩和できる。これにより、マルチプロセッサ１全体での消費電力を抑制することができる。
【００５５】
本実施の形態においては、周波数・電源電圧の制御と優先度制御を独立に行う場合と比べ、マルチプロセッサ１全体の消費電力をさらに削減することができる。
【００５６】
マルチプロセッサ１は、低消費電力化と高性能化の双方を達成可能なアーキテクチャとして期待され、高性能プロセッサや組み込み向けプロセッサにおいても今後の主流になると考えられる。このようなマルチプロセッサ１に対してプログラムの性能制約を満たしつつ、低消費電力化を一層強化できる本実施の形態に係る制御の技術的意義は極めて大きく、ビジネス的にもインパクトは大きい。
【００５７】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態と異なる方式で優先度と周波数・電源電圧とを制御する制御アルゴリズムについて説明する。
【００５８】
性能予測モデルによると、各プロセッサコアＰＵ0〜ＰＵnの周波数が等しくなる場合が、最も低電力となる。
【００５９】
そこで、本実施の形態では、ＦＶＰ協調制御部５は、各プロセッサコアＰＵ0〜ＰＵnの周波数のいずれもが目標範囲に含まれるように（より好ましくは等しくなるように）、優先度を制御する。
【００６０】
例えば、２つのプロセッサコアＰＵ0，ＰＵ1について、プロセッサコアＰＵ0の周波数がプロセッサコアＰＵ1の周波数よりも高い場合、ＦＶＰ協調制御部５は、プロセッサコアＰＵ0の優先度を高くする。
【００６１】
逆に、プロセッサコアＰＵ1の周波数がプロセッサコアＰＵ0の周波数よりも高い場合、ＦＶＰ協調制御部５は、プロセッサコアＰＵ1の優先度を高くする。
【００６２】
このような制御アルゴリズムを用いた場合にも、上記第１の実施の形態の場合と同様に、マルチプロセッサ１全体での消費電力を抑制することができる。
【００６３】
（第３の実施の形態）
本実施の形態においては、上記第１及び第２の実施の形態における性能予測モデルの一例について説明する。
【００６４】
ここでは、説明を簡略化するために、図５に示すような２個のプロセッサコアＰＵ0、ＰＵ1を搭載するマルチプロセッサ（チップマルチプロセッサ）１の場合について説明する。
【００６５】
各プロセッサコアＰＵ0、ＰＵ1は、それぞれが、キャッシュＬ1，Ｌ2を内蔵しており、メモリバス４と主記憶装置２とを共有している。各プロセッサコアＰＵ0，ＰＵ1は、それぞれ独立なプログラムＴ0，Ｔ1を実行する。各プロセッサコアＰＵ0、ＰＵ1は、性能制約としてレイテンシ制約を持つ。
【００６６】
以下においては、メモリバス４のアクセス競合について説明する。
【００６７】
プログラム実行中のプロセッサコアは、図６に示すように、命令の実行を行っている状態（稼動）、キャッシュＬ2へのアクセスがミスし、そのデータを待ってストールしている状態（ストール）の２つの状態をとる。
【００６８】
プロセッサコアの周波数・電源電圧を変化させると、図７に示すように、命令を実行完了するために必要な稼動時間が変化する。ここで、共有のメモリバス４の周波数・電源電圧は一定であるため、ストール時間は不変である。
【００６９】
図８は、レイテンシ制約と、プログラムの実行開始から実行終了までの時間との関係を表すタイミングチャートである。レイテンシ制約を持つプログラムを実行する場合には、レイテンシ制約内に、プログラムの実行開始から実行終了までの時間が収まる必要がある。
【００７０】
図９に示すように、プログラムの実行開始から実行完了までにおける稼働時間が（レイテンシ制約−ストール時間）と等しくなるように選んだ周波数・電源電圧が、性能制約を満たす範囲で最も低い（消費電力を最小にする）周波数・電源電圧である。
【００７１】
稼動時のプロセッサコアの性能は、周波数に比例するので、周波数選択について（１）式が成り立つ。
【数１】
2008287592.tif 000003
【００７２】
以下において、ＬiはプログラムＴiのレイテンシ制約、ｍiはプログラムＴiの実行中に発生するキャッシュＬ2に対するキャッシュミスの回数（＝共有リソースへのアクセス回数）、ｓiはプログラムＴiの実行中のストール時間の長さ（＝単独実行時の共有リソースアクセスによる待ち時間）、ｌBはキャッシュＬ2のキャッシュミス１回分のデータを転送するのに共有リソースが必要とする時間（＝キャッシュＬ2のキャッシュミス１回あたりの共有リソース占有時間）、ＩiはプログラムＴiの命令実行数、とする。
【００７３】
まず、プロセッサコアＰＵiが単独で動作するとき、すなわちアクセス競合がない場合について説明する。この場合、プロセッサコアＰＵiの実効的な稼働時間Ｔiは（２）式で与えられる。
【数２】
2008287592.tif 000004
【００７４】
すなわち、時間ｔiの間にプログラムＴiの命令をちょうど全て処理できるように、プロセッサコアＰＵiの周波数・電源電圧を設定すればよい。
【００７５】
よって、プロセッサコアＰＵiに設定すべき周波数ｆiは（３）式で表される。なお、ｃは定数である。
【数３】
2008287592.tif 000005
【００７６】
プロセッサコアＰＵiを周波数ｆiで動かすのに必要な電源電圧をＶiとすると、プロセッサコアＰＵiが１命令を実行する際に消費するエネルギーｅiは（４）式で与えられる。なお、ｋは定数である。
【数４】
2008287592.tif 000006
【００７７】
以上より、プロセッサコアＰＵiの平均消費電力Ｐi（エネルギー／時間）は（５）式より求められる。
【数５】
2008287592.tif 000007
【００７８】
続いて、各プロセッサコアＰＵ0、ＰＵ1を同時に動作させた場合について説明する。
【００７９】
プロセッサコアＰＵ0上でキャッシュＬ2のキャッシュミスが発生し、主記憶装置からデータを取得しようとする場合、プロセッサコアＰＵ1が共有リソースを占有している確率（コンフリクトが発生する確率）は、（６）式で表される。
【数６】
2008287592.tif 000008
【００８０】
また、プロセッサコアＰＵ1の共有リソース利用の時間分布が一様であると仮定すると、コンフリクトが発生したときにプロセッサコアＰＵ0の転送が待たされる時間の期待値は、（７）式で表される。
【数７】
2008287592.tif 000009
【００８１】
したがって、プロセッサコアＰＵ1との競合によって増加するプロセッサコアＰＵ0のストール時間の、プロセッサコアＰＵ0のキャッシュＬ2のキャッシュミス１回あたりの期待値は（８）式で表される。
【数８】
2008287592.tif 000010
【００８２】
このとき、プロセッサコアＰＵ0の実効稼動時間はｔ0から（９）式のｔ0’に変化する。
【数９】
2008287592.tif 000011
【００８３】
このｔ0’より単独動作時と同様に周波数ｆ0’と電源電圧Ｖ0’が決まる。
【００８４】
プロセッサコアＰＵ1についても同様に、ｔ1’、ｆ0’、Ｖ0’が求まるため、競合がある場合の各プロセッサコアの消費電力Ｐi’は、（１０）式で与えられる。
【数１０】
2008287592.tif 000012
【００８５】
次に、共有リソースの優先度制御を行うことによる電力の変化について説明する。
【００８６】
プロセッサコアＰＵ0，ＰＵ1を同時に動作させるとき、競合によって増加するストール時間の総和は、単位時間あたりの値として（１１）式で表される。
【数１１】
2008287592.tif 000013
【００８７】
ｌtotalは、優先度制御を行っても変わることはない。
【００８８】
しかし、以下に説明するように、各プロセッサコアが競合により被るストールの増分（性能ペナルティ）の比率を変えることはできる。
【００８９】
優先度制御を行う場合において、２つのプロセッサコアＰＵ0，ＰＵ1が同時に共有リソースを使おうとした場合、プロセッサコアＰＵ0を優先すると、図１０に示す状態となる。
【００９０】
一方、プロセッサコアＰＵ1を優先すると、図１１に示す状態となる。
【００９１】
この図１０及び図１１に示したように、待ち時間の総和は不変だが、その配分を変えることは可能である。
【００９２】
そこで、理想的な優先度制御部があると仮定し、この理想的な優先度制御部が、各プロセッサコアＰＵ0，ＰＵ1が受ける性能ペナルティの比率を（１２）式となるように制御するとする（ｒ＝０ならプロセッサコアＰＵ0の転送を必ず先に行う。ｒ＝１ならその逆）。
【数１２】
2008287592.tif 000014
【００９３】
この場合、各プロセッサコアの実効稼働時間ｔi’は、ｒの関数として（１３）式及び（１４）式のように表される。
【数１３】
2008287592.tif 000015
【００９４】
【数１４】
2008287592.tif 000016
【００９５】
したがって、マルチプロセッサ１の合計消費電力Ｐtotal（＝Ｐ0‘＋Ｐ1‘）もｒの関数であり、優先度制御によって変化する。
【００９６】
以下において、上記のような性能予測モデルにおいて、マルチプロセッサ１の合計消費電力Ｐtotalを最小にするｒの値は一般的にただ一つに決まり、以下に示すｄＰtotal／ｄｒが０になるときに最小となる。
【数１５】
2008287592.tif 000017
【００９７】
これにより、電力最小の条件としてＩ0／ｔ0’＝Ｉ1／ｔ1’、すなわちｆ0’＝ｆ1’が導かれる。各プロセッサコアが制約を満たすために必要な周波数を等しくすると電力最小になる。この場合のｒの値は（１６）式で与えられる。
【数１６】
2008287592.tif 000018
【００９８】
このｒminより最適な優先度＝最適な待ち合わせ時間の分配比が得られる。
【００９９】
（第４の実施の形態）
本実施の形態においては、上記第１の実施の形態で説明した優先度と周波数・電源電圧の制御アルゴリズム（以下、第１制御アルゴリズム）を用いた場合と、上記第２の実施の形態で説明した優先度と周波数・電源電圧の制御アルゴリズム（以下、第２制御アルゴリズム）を用いた場合の評価について説明する。
【０１００】
図１３は、第１制御アルゴリズム及び第２制御アルゴリズムを使用しない場合、第１制御アルゴリズムを用いた場合、第２制御アルゴリズムを用いた場合の消費電力の状態の一例を示す図である。
【０１０１】
この図１３では、２つのプロセッサコアＰＵ0，ＰＵ1のうち、プロセッサコアＰＵ0でＨ２６４デコーダが実行され、プロセッサコアＰＵ1で他のプログラム「art」又はプログラム「bzip2」が実行された場合の例を示している。
【０１０２】
この図１３からも分かるように、第１制御アルゴリズム及び第２制御アルゴリズムを使用しない場合よりも、第１制御アルゴリズムを用いた場合、第２制御アルゴリズムを用いた場合の方が、約１０％程度消費電力を抑制できている。
【０１０３】
なお、この評価値は、プログラムの制約の厳しさ、各プロセッサコアＰＵ0，ＰＵ1の負荷のばらつきなどにより変化する。
【０１０４】
上記各実施の形態は、その要旨を変更しない範囲において、種々変形可能である。
【０１０５】
例えば、共有リソースは、各種メモリ、バンク、ＰＣＩバス、ディスプレイ、各種インタフェースなど、各プロセッサコアＰＵ0〜ＰＵnに共有される各種アクセス先であってもよい。
【０１０６】
ＦＶＰ協調制御部５は、ソフトウェアにより実現されるとしてもよい。少なくとも一つのプロセッサコアにより、ＦＶＰ協調制御部５の機能が実現されるとしてもよい。
【０１０７】
上記各実施の形態においては、アクセスキュー３ｃ内のリクエストの追い抜きにより優先度を調整しているが、その他の手法により優先度を調整してもよい。例えば、プロセッサコアごとにリクエスト記憶部を設け、優先度制御部６の制御タイミングにそってリクエスト記憶部から共有リソースにリクエストが発行されるとしてもよい。
【０１０８】
優先度と周波数・電源電圧の制御アルゴリズムとしては、他のアルゴリズムを用いることもできる。
【０１０９】
上記各実施の形態において、各種の構成要素は自由に組み合わせ又は分離することができる。例えばＦＶＰ協調制御部５、優先度制御部６、周波数・電源電圧制御部７は、任意に組み合わせることができる。ＦＶＰ協調制御部５、優先度制御部６、周波数・電源電圧制御部７のすべてを組み合わせて１ユニットとしてもよい。
【図面の簡単な説明】
【０１１０】
【図１】本発明の第１の実施の形態に係るマルチプロセッサ制御装置の構成の一例を示すブロック図。
【図２】プログラムの性能制約を満たす状況における、プロセッサコアＰＵ0の消費電力、プロセッサコアＰＵ1の消費電力、プロセッサコアＰＵ0及びＰＵ1の消費電力の合計のそれぞれと、リクエストの優先度との関係の一例を示すグラフ。
【図３】リクエストキューの一例を示すブロック図。
【図４】周波数・電源電圧調整インターバルごとに周波数・電源電圧を調整し、優先度調整インターバルごとに優先度を調整する制御手法の一例を示す図。
【図５】本発明の第３の実施の形態に係るマルチプロセッサと共有リソースとの関係の一例を示すブロック図。
【図６】プロセッサコアの稼動状態とストール状態との関係の一例を示すタイミングチャート。
【図７】周波数が異なる場合のプログラムの実行開始から実行完了までの時間の変化の一例を示すタイミングチャート。
【図８】レイテンシ制約と、プログラムの実行開始から実行終了までの時間との関係を表すタイミングチャート。
【図９】プロセッサコアの稼働時間の上限とストール時間の総和との関係の一例を示す図。
【図１０】プロセッサコアＰＵ1よりもプロセッサコアＰＵ0を優先させる状態の一例を示す図。
【図１１】プロセッサコアＰＵ0よりもプロセッサコアＰＵ1を優先させる状態の一例を示す図。
【図１２】市販のプロセッサの電圧・周波数の関係を線形近似した結果の一例を示す図。
【図１３】第１の実施の形態に係るマルチプロセッサ制御装置を適用した場合と第２の実施の形態に係るマルチプロセッサ制御装置を適用した場合の評価の一例を示す図。
【符号の説明】
【０１１１】
１…マルチプロセッサ、ＰＵ0〜ＰＵn…プロセッサコア、２…主記憶装置、３…転送管理部、３ａ…ＭＭＵ、３ｂ…バスコントローラ、３ｃ…アクセスキュー、４…メモリバス、５…ＦＶＰ協調制御部、６…優先度制御部、７…周波数・電源電圧制御部
【図１】
2008287592.tif 000019
【図２】
2008287592.tif 000020
【図３】
2008287592.tif 000021
【図４】
2008287592.tif 000022
【図５】
2008287592.tif 000023
【図６】
2008287592.tif 000024
【図７】
2008287592.tif 000025
【図８】
2008287592.tif 000026
【図９】
2008287592.tif 000027
【図１０】
2008287592.tif 000028
【図１１】
2008287592.tif 000029
【図１２】
2008287592.tif 000030
【図１３】
2008287592.tif 000031