(57)【要約】【課題】フェアネスを向上して高性能化及び低消費電力を実現することが可能な半導体装置とその制御方法を提供する。【解決手段】検出部１２は、プロセッサ毎に、前記共有リソースのアクセス率を検出する。決定部１５は、検出部１２により検出されたアクセス率に基づき、プロセッサ毎の動作周波数と電源電圧を決定する。制御部１６は、決定部１５により決定された動作周波数と電源電圧に基づき、プロセッサ毎に動作周波数と電源電圧を制御することにより、前記共有リソースのアクセス率を調整する。【選択図】      図１
2007114856.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記プロセッサに共有される共有リソースと、
前記プロセッサ毎に、前記共有リソースのアクセス率を検出する検出部と、
前記検出部により検出されたアクセス率に基づき、前記プロセッサ毎の動作周波数と電源電圧を決定する決定部と、
複数の前記プロセッサに接続され、前記決定部により決定された動作周波数と電源電圧に基づき、前記プロセッサ毎に動作周波数と電源電圧を制御することにより、前記共有リソースのアクセス率を調整する制御部と
を具備することを特徴とする半導体装置。
【請求項２】
前記検出部は、前記各プロセッサに対応して設けられ、前記共有リソースのリクエスト回数を計数する複数の第１のカウンタと、
前記共有リソースに転送されるプロセッサの番号を保持するレジスタと、
前記プロセッサの番号ｉに対応する前記第１のカウンタのカウント値が０より大きく、前記レジスタに保持されたプロセッサの番号がｉと異なる場合、信号を生成する信号生成回路と、
前記信号生成回路から出力される信号を前記プロセッサに対応してカウントする複数の第２のカウンタと
を具備することを特徴とする請求項１記載の半導体装置。
【請求項３】
前記検出部は、前記各プロセッサに対応して設けられ、前記共有リソースのリクエスト回数を計数する複数の第１のカウンタと、
前記共有リソースに転送されるプロセッサの番号を保持するレジスタと、
前記レジスタに保持されたプロセッサの番号がｉであるとき、前記プロセッサの番号がｊ（ｊ≠ｉ）に対応する前記第１のカウンタのカウント値が０より大きい場合、信号を生成する信号生成回路と、
前記信号生成回路から出力される信号を前記プロセッサに対応してカウントする複数の第２のカウンタと
を具備することを特徴とする請求項１記載の半導体装置。
【請求項４】
複数のプロセッサの共通リソースに対するアクセス率をプロセッサ毎に検出し、
前記検出されたアクセス率に基づき前記各プロセッサの動作周波数と電源電圧を制御することにより、前記共通リソースのアクセス率を調整する
ことを特徴とする半導体装置の制御方法。
【請求項５】
前記共通リソースは、少なくともメモリバス、主記憶、コプロセッサのいずれかを含むことを特徴とする請求項１記載の半導体装置、又は請求項４記載の半導体装置の制御方法。
【請求項６】
前記アクセス率は、前記共通リソースに対するアクセスのウェイト数であることを特徴とする請求項１記載の半導体装置、又は請求項４記載の半導体装置の制御方法。
【請求項７】
前記アクセス率は、前記共通リソースに対するアクセスの阻害数であることを特徴とする請求項１記載の半導体装置、又は請求項４記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、例えば複数のプロセッサを１チップに搭載したチップ・マルチ・プロセッサ（Chip Multi Processor：ＣＭＰ）とその制御方法に関する。
【背景技術】
【０００２】
近年、消費電力や発熱の増加に伴い、クロック周波数を増加することによるプロセッサの高性能化が望めなくなりつつある。このため、ＶＬＳＩチップにおける性能向上手段として、ＣＭＰが今後の有効なアーキテクチャとして注目されている。複数のプロセッサコア（ＰＵ）を１チップに搭載したＣＭＰにより、シングルタスクの並列処理、あるいは複数タスクの並行処理を行なうことにより、高い処理能力を得ることができる。したがって、周波数の増大によらずプロセッサの高性能化が可能であるため、性能あたりの消費電力効率が向上すると期待されている。
【０００３】
ＣＭＰではリソースを有効活用するため、複数のＰＵがあるメモリ階層以下(例えばＬ２キャッシュ以下)にあるキャッシュやバスを共有することが一般的である。この共有リソースの使用率はプログラムの性質に大きく依存し、同時に実行するプログラムの組み合わせによってはリソース競合が発生する。したがって、あるＰＵで実行されているプログラムの性能は、他のＰＵ上で実行されているプログラムに大きく影響を受ける。
【０００４】
従来、ＣＭＰにおける共有キャッシュに着目し、ＰＵ間でのキャッシュ競合によるミスの増加を防ぐことによって、アプリケーション実行のスループットを向上させる手法が提案されている（例えば非特許文献１参照）。また、プログラムを単独で実行した場合、すなわち競合がない場合に比べて、ＣＭＰ上で複数のプログラムを実行した際に、各プログラムの性能がどの程度低下するかの公平さを示す指標であるフェアネス（Fairness）を向上させる手法も提案されている（例えば非特許文献２参照）。これら従来技術は、キャッシュを論理的なパーティションに分割し、それらを各プログラム専用の領域として割り当てることで、キャッシュ上での競合を防ぎつつ効率的な実行を可能としている。競合が発生すると、特定のプロセスの性能が大きく低下する。このため、上記従来技術は、キャッシュ領域を分割することにより性能低下を防止してフェアネスを向上させている。また、チップ全体に関して、トータルのＬ２キャッシュミスを減少させることにより、高性能化を達成している。
【非特許文献１】G.E.Suh、 S.Devadas、 and L.Rudolph、 “A New Memory Monitoring Scheme for Memory-Aware Scheduling and Partitioning”、 In Proc. 8th high Performance Computer Architecture、 pp. 117-128、 Feb.2002.
【非特許文献２】S.Kim、 D.Chandra、 and Y.Solihin、 “Fair Cache Sharing and Partitioning in a Chip Multiprocessor Architecture”、 In Proc. 13th PACT、 pp.111-122、 Oct. 2004.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、共有リソースの競合はキャッシュ以外の共有リソースにおいても発生し、しかも競合が発生した場合消費エネルギーの増大を招く。このため、フェアネスを向上して性能（トータルスループット）も向上でき、しかも、低消費電力化が可能な技術の開発が望まれている。
【０００６】
本発明は、フェアネスを向上して高性能化及び低消費電力を実現することが可能な半導体装置とその制御方法を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の半導体装置の態様は、複数のプロセッサと、前記プロセッサに共有される共有リソースと、前記プロセッサ毎に、前記共有リソースのアクセス率を検出する検出部と、前記検出部により検出されたアクセス率に基づき、前記プロセッサ毎の動作周波数と電源電圧を決定する決定部と、複数の前記プロセッサに接続され、前記決定部により決定された動作周波数と電源電圧に基づき、前記プロセッサ毎に動作周波数と電源電圧を制御することにより、前記共有リソースのアクセス率を調整する制御部とを具備している。
【０００８】
本発明の半導体装置の制御方法の態様は、複数のプロセッサの共通リソースに対するアクセス率をプロセッサ毎に検出し、前記検出されたアクセス率に基づき前記各プロセッサの動作周波数と電源電圧を制御することにより、前記共有リソースのアクセス率を調整することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、フェアネスを向上して高性能化及び低消費電力を実現することが可能な半導体装置その制御方法を提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１１】
本実施形態は、従来のように、キャッシュを分割するのではなく、各ＰＵの動作周波数、及び電源電圧を動的電源電圧／周波数制御（Dynamic Voltage/Frequency Scaling：ＤＶＦＳ）手法によって制御することにより、フェアネスを向上し、高性能化及び低消費電力を実現する技術を提案する。一例として、キャッシュミス時にメモリバスの競合が多く発生して性能低下の大きな原因となることに着目し、バスの競合を監視して競合による性能低下を示すストール率を測定する。この測定したストール率に応じて、各ＰＵの性能低下が一定となるよう、周波数、及び電源電圧を制御する。すなわち、あるプロセスのキャッシュミス率が高く、バスに対するアクセスが頻発する場合、他方のプロセスの性能低下が相対的に大きくなる。この場合、フェアネスを維持することが困難となる。このため、頻繁にバスをアクセスするＰＵの周波数、及び電源電圧を低下させることによりバスアクセスを抑制し、他のプロセスのバスアクセスを円滑化することで、フェアネスを向上させる。
【００１２】
（第１の実施形態）
図１は、第１の実施形態に係る構成図を示している。図１において、ＣＭＰ１１は、例えば２つのプロセッサコアＰＵ０、ＰＵ１を有している。プロセッサコアの数は２つに限定されるものではない。ＰＵ０、ＰＵ１は、電源電圧、及び動作周波数が独立に制御可能とされている。さらに、ＰＵ０、ＰＵ１は、Ｌ２キャッシュ１１−１を共有している。Ｌ２キャッシュ１１−１は、アクセス率検出部１２を介して共有リソースとしてのメモリバス１３に接続されている。このメモリバス１３には、主記憶としてのメモリ（例えばＤＲＡＭ）１４が接続されている。共有リソースとしては、メモリバス１３、メモリ１４以外に、図示せぬコプロセッサ等であってもよい。
【００１３】
前記アクセス率検出部１２は、リクエストキュー１２−１、カウンタ１２−２、１２−３、レジスタ１２−４、信号生成回路１２−５、カウンタ１２−６、１２−７により構成されている。前記リクエストキュー１２−１は、例えばファースト・イン・ファースト・アウト・レジスタ１２−１により構成され、Ｌ２キャッシュ１１−１とメモリバス１３の間に接続されている。このリクエストキュー１２−１は、Ｌ２キャッシュから供給されるＰＵ０、ＰＵ１のリクエストを記憶する。カウンタ１２−２、１２−３は、リクエストキュー１２−１の入力端に接続され、ＰＵ０、ＰＵ１の未解決のバスリクエスト数Ｃreq0、Ｃreq1をそれぞれカウントする。すなわち、カウンタ１２−２、１２−３は、ＰＵ０、ＰＵ１においてキャッシュミスが発生し、バスリクエストが発生されると、このリクエスト数をカウントする。
【００１４】
また、レジスタ１２−４は、リクエストキュー１２−１の出力端に接続されている。リクエストキュー１２−１は、バスリクエストとして、例えばアドレス(ａｄｄｒ)と、このバスリクエストがどのＰＵからのものかを示すＰＵ番号ＰＵ#ｉ（ｉ＝０，１）を保持する。レジスタ１２−４は、リクエストキュー１２−１にリクエストが存在する場合、リクエストキュー１２−１からメモリバス１３へ転送されるバスリクエストに含まれるＰＵ番号ＰＵ#ｉを保持する。
【００１５】
信号生成回路１２−５の入力端には、カウンタ１２−２、１２−３からバスリクエスト数Ｃreq0、Ｃreq1が供給され、レジスタ１２−４からＰＵ番号ＰＵ#ｉが供給される。この信号生成回路１２−５は、例えば比較回路により構成されている。
【００１６】
図２は、信号生成回路１２−５の動作を示している。信号生成回路１２−５は、前記バスサイクル毎に、カウンタ１２−２、１２−３から供給されるバスリクエスト数Ｃreq0、Ｃreq1とレジスタ１２−４から供給されるＰＵ番号ＰＵ#ｉとを比較する（Ｓ１）。仮に、カウンタ１２−２から供給されるＰＵ０のバスリクエスト数Ｃreq0が１以上であり、レジスタ１２−４から供給されるＰＵ番号ＰＵ#ｉがＰＵ０ではない場合、その時間、ＰＵ０はバス競合のため、リクエストが待たされたこととなる。信号生成回路１２−５は、Ｃreqi (i = 0、 1) ＞ ０、且つＰＵ# ≠ i である場合、カウンタをインクリメントするための信号を出力する（Ｓ２）。
【００１７】
信号生成回路１２−５の出力端には、カウンタ１２−６、１２−７が接続されている。カウンタ１２−６は、バスサイクル毎に信号生成回路１２−５の出力信号をカウントし、ＰＵ０のリクエストが待たされたサイクル数をウェイト数Ｃwait0としてカウントする。同様に、カウンタ１２−７は、バスサイクル毎に信号生成回路１２−５の出力信号をカウントし、ＰＵ１のリクエストが待たされたサイクル数をウェイト数Ｃwait1としてバスサイクル毎にカウントする。ウェイト数Ｃwaiti(i=0、1)は、バス競合によるストール時間と考えられるため、Ｃwaitiを比較することにより、各プロセスの性能低下を予測できる。Ｃwaitiが相対的に大きい場合、性能低下が大きく、Ｃwaitiが小さい場合、性能低下が小さいこととなる。
【００１８】
カウンタ１２−６、１２−７の出力信号は、周波数決定回路１５に供給される。この周波数決定回路１５は、例えば２つの閾値ＴｈＵ、ＴｈＬを有する比較回路により構成されている。周波数決定回路１５は、一定のタイムインターバルＴitvｌ毎に、カウンタ１２−６、１２−７から供給されるウェイト数Ｃwait0、Ｃwait1に基づき、ＰＵ０、ＰＵ１の周波数及び電源電圧を制御するための信号を出力する。
【００１９】
図２は、周波数決定回路１５の動作を示すフローチャートである。フェアネスを維持するためには、Ｃwaitiが等しくなるようにＰＵ０、ＰＵ１の周波数及び電源電圧を制御すればよい。
【００２０】
具体的には、Ｃwaitiが相対的に大きいＰＵの周波数を上げ、小さいＰＵの周波数を下げるように制御する。このため、周波数決定回路１５は、先ず、一定のタイムインターバルＴitvｌを経過すると（Ｓ１１）、式（１）で示すＣwaitiの平均値Ｃwaitavgを算出する（Ｓ１２）。
【００２１】
Ｃwaitavg＝（Ｃwait0＋Ｃwait1）／２                …（１）
この後、式（２）で示すＰＵ毎のＣwaitiと平均値Ｃwaitavgとの差分diffiが算出される（Ｓ１３）。
【００２２】
diffi＝Ｃwaitavg−Ｃwaiti                      …（２）
次に、差分diffiと上限の閾値ＴｈＵとが比較される（Ｓ１４）。この結果、差分diffiが上限の閾値ＴｈＵより大きい場合、ＰＵｉの周波数及び電源電圧が１レベル低下される（Ｓ１５）。
【００２３】
次いで、差分diffiと下限の閾値ＴｈＬとが比較される（Ｓ１６）。この結果、差分diffiが下限の閾値ＴｈＬより小さい場合、ＰＵｉの周波数及び電源電圧が１レベル上昇される（Ｓ１７）。上記比較の結果、いずれの場合でもない場合、周波数及び電源電圧は変更しない。
【００２４】
尚、カウンタ１２−６、１２−７は、タイムインターバルＴitvｌ毎にリセットされる。
【００２５】
上記のようにして、周波数決定回路１５から、ＰＵｉの周波数及び電源電圧を上昇又は低下させるための信号ＣＵ又はＣＬが出力される。この信号ＣＵ又はＣＬは、周波数制御回路１６に供給される。この周波数制御回路１６は、信号ＣＵ又はＣＬに基づき、ＰＵ０又はＰＵ１の周波数及び電源電圧を上昇又は低下させる。
【００２６】
図４（ａ）（ｂ）、及び図５は、第１の実施形態を評価するシミュレーションのパラメータを示している。図４（ａ）は、評価対象の各ＰＵのシミュレーションパラメータの一例を示し、図４（ｂ）は、共有Ｌ２キャッシュなど共有リソースのシミュレーションパラメータの一例を示している。また、ＰＵの数は例えば２個である。ＰＵの周波数、電源電圧は、例えばインテル社製 Pentium （登録商標）Ｍ プロセッサの設定をベースとして、図５に示す７通りのレベルを仮定した。
【００２７】
尚、電源電圧の低下には限界があるため、４００ＭＨｚ以下の電源電圧は同一値を用いた。また、タイムインターバルＴitvl、下限の閾値ＴｈＬ、上限の閾値ＴｈＵは、例えば次のように仮定した。
【００２８】
Ｔitvl ： ２５００００ bus-cycle ＝ ６２５（μｓ）
ＴｈＵ ： ２００００、ＴｈＬ ： １００００
上記仮定に基づき、第１の実施形態に係るＣＭＰと、常に最高周波数で動作する通常のＣＭＰとを比較する。
【００２９】
図６は、例えば３６のベンチマークプログラムの組合せを評価した結果を示しており、オリジナルのフェアネスを１とした場合に対する第１の実施形態の制御方法による相対的なフェアネスの値を示している。フェアネスの値Ｆairｉｊは、式（３）に示す通りである。
【００３０】
Ｆairｉｊ  ＝｜Ｘｉ−Ｘｊ｜          …（３）
ここで、Ｘｉ＝ＩＰＳshri／ＩＰＳdedi、Ｘｊ＝ＩＰＳshrj／ＩＰＳdedj、ＩＰＳdedi、ＩＰＳdedjは、リソース共有の影響がない場合でのプロセスｉ、ｊの性能、ＩＰＳshri、ＩＰＳshrjは、複数のプロセスが動作している状況下でのプロセスｉ、ｊの性能であり、ｎプロセスを実行した場合の性能である。
【００３１】
Ｆairｉｊは、値が小さいほど良いこととなる。
【００３２】
図６に示すように、シミュレーションの結果、殆どのプログラムにおいて、フェアネスが向上していることが分かる。特にキャッシュミス率が比較的高いプログラムの組合せの場合にフェアネスの向上が大きい。キャッシュミス率が高い場合、バスへのアクセスが頻繁に生じ競合も発生しやすい。このため、オリジナルでは、フェアネスが悪くなることが多い。これに対して、第１の実施形態によれば、バスの競合による性能への影響を各プロセスで公平になるように周波数を制御しているため、フェアネスを大きく向上することができる。
【００３３】
図６において、art + apsi、 mcf + equake、及び lucas +bzip 2 のプログラムにおいて、フェアネスが悪化している。これらのプログラムは、オリジナルの場合、非常によいフェアネスを達成していたが、本実施形態により周波数を制御した結果、性能低下率の調整が過度であったため、フェアネスが悪化したものである。しかし、本実施形態の場合でも、両プログラムの性能低下率の差、すなわち、Ｆairｉｊ  の絶対値はそれぞれ、０．０５、０．０２、０．０６と非常に小さく、本実施形態でのフェアネスの悪化は殆ど問題とならない。
【００３４】
図７は、２ＰＵ構成の場合の性能（トータルスループット）ＩＰＳtotalを通常のプロセッサの性能を１とした場合の相対値で示している。評価条件は、図６の場合と同様である。性能ＩＰＳtotalは、次式（４）で表される。
【００３５】
Ｎ−１
ＩＰＳtotal＝ ΣＩＰＳｉ                    …（４）
ｉ＝０
ここで、ＩＰＳｉは、コアｉについてｔ（ｓ）中に実行された命令の数がＩｎｓｔｉのときの性能であり、ＩＰＳｉ＝Ｉｎｓｔｉ／ｔで表される。
【００３６】
したがって、式（４）は、ｎ個のコアを有するＣＭＰ全体の性能を表している。
【００３７】
図７に示すように、評価した３６通りのプログラムの組合せ中、性能が向上したものが１４個、性能が悪化したものが１２個、オリジナルと同じ性能のものが１０個という結果となった。平均では４％の性能向上を達成している。ここで、性能が低下したプログラムにおいても、フェアネスは向上している。この結果は、フェアネスの向上が必ずしも性能向上には結びつかないことを示している。しかし、プログラムlucas + swim 及び lucas + apsi を除いて性能低下の割合はそれほど大きくない。したがって、フェアネスと性能向上の両方を達成することが可能となっている。
【００３８】
図８は、２ＰＵ構成の場合の命令あたりの消費エネルギー削減率（Energy per committed Instruction : EPI）を示すものであり、通常のプロセッサのＥＰＩに対する削減率を示している。評価条件は、図６と同様である。図８から明らかなように、本実施形態の場合、アクセス率が高いＰＵの周波数と電源電圧を低下させることにより、多くのプログラムにおいて消費エネルギー効率が向上している。したがって、性能及びエネルギー効率の両方が改善されているプログラムが多く、本実施形態はＣＭＰにおいて有効な技術であると考えられる。
【００３９】
上記第１の実施形態によれば、各ＰＵの共通リソースに対するアクセス率をウェイト数として検出し、この検出したウェイト数に応じて各ＰＵの動作周波数、及び電源電圧を制御している。すなわち、頻繁にバスをアクセスして他のプロセスの実行を阻害しているプロセスの周波数を下げている。このため、フェアネス及び命令処理のスループットを向上させることが可能である。しかも、アクセス率が高いＰＵは、低い電源電圧で動作させているため、消費電力を削減でき、エネルギー効率を向上することが可能である。
【００４０】
（第２の実施形態）
図９、図１０、図１１は、第２の実施形態を示している。図９において、図１と同一部分には同一符号を付し、異なる部分についてのみ説明する。
【００４１】
第２の実施形態は、信号生成回路２１が第１の実施形態と相違する。上記第１の実施形態において、信号生成回路１２−５は、Ｃreqi (i = 0、1) ＞ ０、且つＰＵ# ≠ i である場合、カウンタをインクリメントするための信号を出力していた。
【００４２】
これに対して、第２の実施形態の信号生成回路２１は、図１０に示すように、
Ｃreqj (j ≠ i) ＞ ０、ＰＵ# ＝ i 
である場合（Ｓ２１）、信号を出力する（Ｓ２２）。この条件は、バスで転送中のＰＵ以外のＰＵに未解決のリクエストがある場合を示している。すなわち、ＰＵｉは、バス競合により、他のＰＵのリクエストを阻害していることとなる。したがって、信号生成回路２１の出力端に接続されたカウンタ２２、２３は、リクエストを阻害していたサイクル数Ｃblock0、Ｃblock1をそれぞれカウントすることとなる。このため、カウンタ２２、２３によりカウントされたサイクル数Ｃblock0、Ｃblock1の値は、相対的に大きい場合、阻害度合いが大きく、相対的に小さい場合、阻害度合いが小さい。
【００４３】
図１１は、周波数決定回路２４の動作を示している。周波数決定回路２４は、カウンタ２２、２３から供給されるサイクル数Ｃblock0、Ｃblock1を一定のタイムインターバルＴitvl毎に演算する。すなわち、周波数決定回路２４は、一定のタイムインターバルＴitvlを経過すると（Ｓ３１）、式（５）に示すように、Ｃblockiの平均値Ｃblockavgを算出する（Ｓ３２）。
【００４４】
Ｃblockavg＝（Ｃblock0＋Ｃblock1）／２              …（５）
この後、式（６）に示すＰＵ毎のＣblockiと平均値Ｃblockavgとの差分diffiが算出される（Ｓ３３）。
【００４５】
diffi＝Ｃblocki−Ｃblockavg                    …（６）
次に、差分diffiと上限の閾値ＴｈＵとが比較される（Ｓ３４）。この結果、差分diffiが上限の閾値ＴｈＵより大きい場合、ＰＵｉの周波数及び電源電圧が１レベル低下される（Ｓ３５）。
【００４６】
次いで、差分diffiと下限の閾値ＴｈＬとが比較される（Ｓ３６）。この結果、差分diffiが下限の閾値ＴｈＬより小さい場合、ＰＵｉの周波数及び電源電圧が１レベル上昇される（Ｓ３７）。上記比較の結果、いずれの場合でもない場合、周波数及び電源電圧は変更しない。
【００４７】
周波数決定回路２４から、ＰＵｉの周波数及び電源電圧を上昇又は低下させるための信号ＣＵ又はＣＬが出力される。この信号ＣＵ又はＣＬは、周波数制御回路１６に供給される。この周波数制御回路１６は、信号ＣＵ又はＣＬに基づき、ＰＵ０又はＰＵ１の周波数及び電源電圧を上昇又は低下させる。
【００４８】
上記第２の実施形態によれば、各ＰＵの共通リソースに対するアクセス率として阻害率を検出し、検出した阻害率に応じて各ＰＵの動作周波数、及び電源電圧を制御している。すなわち、頻繁にバスをアクセスして他のプロセスの実行を阻害しているプロセスの周波数を下げている。したがって、第１の実施形態と同様に、フェアネス及び命令処理のスループットを向上させることができるとともに、消費電力を削減でき、エネルギー効率を向上することが可能である。
【００４９】
尚、上記第１、第２の実施形態は、共有リソースに対するアクセス率又は阻害率を検出することにより、各プロセッサの周波数、電圧を制御した。しかし、これに限定されるものではなく、例えば共有リソースへのアクセスイベントやイベント発生時刻をログとして記録し、そのログを解析することにより、ＰＵ毎のアクセス率や、阻害率を検出してもよい。
【００５０】
あるいは、実行させるプログラムのプロファイルを予め検出し、このプロファイルに応じてアクセス頻度などを予め求めておくことにより、実行時にその情報を用いることも可能である。
【００５１】
また、上記第１、第２の実施形態において、周波数、電源電圧は、一定のタイムインターバル毎に制御した。しかし、これに限定されるものではなく、例えば前記アクセス率検出部１２にレジスタを設け、例えばプログラムのある区間のアクセス率などの情報を、このレジスタに記憶させ、再度、前記プログラムの前記区間に制御が移行された際、前記レジスタに記憶されたアクセス率と今回のアクセス率に基づき、ＰＵの周波数、電源電圧を制御するように構成してもよい。
【００５２】
さらに、プログラムのコンパイル時などにおいて、予めプログラム中のある部分は、ある周波数で動作させるというようにＰＵの動作条件を予め設定し、この動作条件に基づきＰＵの周波数を制御することも可能である。
【００５３】
また、上記第１、第２の実施形態において、アクセス率検出部１２、周波数決定回路１５は、ハードウェアにより構成したが、ソフトウェアにより構成することも可能である。
【００５４】
その他、本発明の要旨を変えない範囲において、種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【００５５】
【図１】第１の実施形態に係る半導体装置を示す構成図。
【図２】図１に示す信号生成回路の動作を示すフローチャート。
【図３】図１に示す周波数決定回路の動作を示すフローチャート。
【図４】図４（ａ）（ｂ）は、シミュレーション条件を示す図。
【図５】シミュレーション条件を示す図。
【図６】第１の実施形態に係るフェアネスの評価結果を示す図。
【図７】第１の実施形態に係る性能の評価結果を示す図。
【図８】第１の実施形態に係る消費エネルギー削減率の評価結果を示す図。
【図９】第２の実施形態に係る半導体装置を示す構成図。
【図１０】図９に示す信号生成回路の動作を示すフローチャート。
【図１１】図９に示す周波数決定回路の動作を示すフローチャート。
【符号の説明】
【００５６】
１１…ＣＭＰ、１２…アクセス率検出部、１３…メモリバス、１４…メモリ、１５…周波数決定回路、１６…周波数制御回路、ＰＵ０，ＰＵ１…プロセッサコア。
【図１】
2007114856.tif 000003
【図２】
2007114856.tif 000004
【図３】
2007114856.tif 000005
【図４】
2007114856.tif 000006
【図５】
2007114856.tif 000007
【図６】
2007114856.tif 000008
【図７】
2007114856.tif 000009
【図８】
2007114856.tif 000010
【図９】
2007114856.tif 000011
【図１０】
2007114856.tif 000012
【図１１】
2007114856.tif 000013