JP5545376B2 - マルチコアプロセッサシステム、および電力制御方法 - Google Patents

マルチコアプロセッサシステム、および電力制御方法 Download PDF

Info

Publication number
JP5545376B2
JP5545376B2 JP2012549537A JP2012549537A JP5545376B2 JP 5545376 B2 JP5545376 B2 JP 5545376B2 JP 2012549537 A JP2012549537 A JP 2012549537A JP 2012549537 A JP2012549537 A JP 2012549537A JP 5545376 B2 JP5545376 B2 JP 5545376B2
Authority
JP
Japan
Prior art keywords
cpu
clock frequency
cpus
access
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012549537A
Other languages
English (en)
Other versions
JPWO2012086040A1 (ja
Inventor
貴久 鈴木
浩一郎 山下
宏真 山内
康志 栗原
文彦 早川
尚記 大舘
哲夫 平木
俊也 大友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012086040A1 publication Critical patent/JPWO2012086040A1/ja
Application granted granted Critical
Publication of JP5545376B2 publication Critical patent/JP5545376B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、電力を制御するマルチコアプロセッサシステム、および電力制御方法に関する。
近年、1つのシステム内に、複数のコアを有するマルチコアプロセッサシステムの形態を採用する機器が増加している。マルチコアプロセッサシステムでは、複数のコアが同時に動作するため、複数のコアが同一のデバイスにアクセスする可能性がある。このようなデバイスに対するアクセス競合が発生した場合、マルチコアプロセッサシステムでは、ハードウェアによる調停方法、またはソフトウェアによる調停方法が行われてきた。
ハードウェアによる調停方法は、たとえば、調停回路を用いる方法である。調停回路が、たとえば、デバイスの一つであるメモリの入出力ポートに設置されており、複数のコアからのメモリに対するアクセスに対して調停を行う。ハードウェアによる調停方法では、コアで実行するソフトウェアが特に調停を行わなくとも、ハードウェアが調停を行う。具体的に、調停を行うハードウェアは、特定のコアが調停対象デバイスに対するアクセス権を取得した後、他のコアから調停対象デバイスへのアクセス要求を受けた場合、特定のコアがアクセスを完了してアクセス権を解放するまで、他のコアを待機させる。
また、ソフトウェアによる調停方法は、たとえば、マルチコアプロセッサシステム用のOS(Operating System)が提供する排他制御の機能を利用して、ソフトウェアが同一時間に調停対象デバイスに1つのコアがアクセスするように調停する方法である。ソフトウェアによる調停方法が適用される場合として、たとえば、メモリ上の同じ箇所に複数のコアがアクセスする場合である。または、DMAC(Direct Memory Access Controller)やディスプレイ等の描画デバイス、といった周辺デバイスを、複数のコアが同時にアクセスする場合である。
しかし、ハードウェアまたはソフトウェアによる調停方法のいずれの方法を行っても、アクセス権を確保できなかったコアは特定のコアがアクセス権を解放するまで待機するため、マルチコアプロセッサシステムの処理性能が低下していた。したがって、アクセス競合そのものを回避し、処理性能の低下を防ぐ技術が開示されている。
たとえば、ハードウェアによる調停方法に対して、OSのスケジューリングにより、メモリアクセスを頻繁に行う処理同士を同時に実行しないようにスケジューリングする技術が開示されている。また、ソフトウェアによる調停方法に対して、並行処理を行う処理に対し、アクセス権の獲得に失敗しても、状態遷移を待機状態にせず、実行可能状態とすることで、状態遷移の回数を減らし、状態遷移に伴うオーバーヘッドを減らす技術が開示されている(たとえば、下記特許文献1、2を参照。)。
また、近年、クロック周波数と電圧を変更して、低消費電力を実現するDVFS(Dynamic Voltage and Frequency Scaling)という技術が開示されている。具体的に、DVFSは、マルチコアプロセッサシステムを電力ドメインという単位で区切り、ドメイン単位でクロック周波数と電圧を変更する。DVFSを利用することにより、負荷の低いコアのクロック周波数と電圧を落として消費電力を下げる効果、または負荷の高いコアのクロック周波数と電圧を上げてマルチコアプロセッサシステムの処理性能を向上させる効果を生むことが可能である(たとえば、下記特許文献3、4を参照。)。
特開2000−148712号公報 特開平6−161872号公報 特開2006−293768号公報 特開2003−256069号公報
しかしながら、上述した従来技術において、特許文献1、2にかかる技術では、競合の発生、またはオーバーヘッドを削減できず、性能低下が発生してしまうケースも存在するという問題があった。たとえば、実行可能な処理群のうち、全ての処理がメモリアクセスを頻繁に行う処理である場合、マルチコアプロセッサシステムは、どのようにスケジューリングしても、アクセス競合が発生し、処理性能の低下が発生する。また、特許文献3、4にかかる技術において、DVFS技術を競合発生時に適用しようとする場合、負荷の低い箇所の処理能力を下げる方向と、負荷の高い箇所の処理能力を上げる方向という2つの方向のいずれか一方を選択しなければならないという問題があった。
本発明は、上述した従来技術による問題点を解消するため、コアによるデバイスに対するアクセス競合が発生する場合に、処理性能を維持しつつ消費電力を削減できるマルチコアプロセッサシステム、および電力制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、複数のCPUと、デバイスと、デバイスにアクセスするCPUの数に対して消費電力が最小となるクロック周波数および電圧が格納されるメモリと、デバイスにアクセスするCPUの数が変化するとき、CPUの数に対応するクロック周波数および電圧をメモリから読み出して、デバイスにアクセスするCPUにクロック周波数および電圧を設定する電力制御ユニットとを含む。
本マルチコアプロセッサシステム、および電力制御方法によれば、コアによるデバイスに対するアクセス競合が発生する場合に、処理性能を維持しつつ消費電力を削減できるという効果を奏する。
図1は、実施の形態1におけるマルチコアプロセッサシステム100のアクセス競合時の動作を示す説明図である。 図2は、マルチコアプロセッサシステム100のハードウェアを示すブロック図である。 図3は、実施の形態1におけるマルチコアプロセッサシステム100の機能を示すブロック図である。 図4は、マルチコアプロセッサシステム100の消費電力の計算例を示す説明図である。 図5は、ハードウェアによる調停を受けるデバイス#S0への動作シーケンスを示す説明図である。 図6は、ハードウェアによる調停を受けるデバイス#H0のクロック周波数を上げた場合の動作シーケンスを示す説明図である。 図7は、ソフトウェアによる調停を受けるデバイス#S0の動作シーケンスを示す説明図である。 図8は、ソフトウェアによる調停を受けるデバイス#S0のクロック周波数を上げた場合の動作シーケンスを示す説明図である。 図9は、ハードウェアによる調停を受けるデバイス群205のクロック周波数の変化に伴う消費電力量の説明図である。 図10は、ソフトウェアによる調停を受けるデバイス群206のクロック周波数の変化に伴う消費電力量の説明図である。 図11は、消費電力量の変化例と、実施の形態1におけるクロック周波数テーブル301の記憶内容の一例を示す説明図である。 図12は、デバイス#H0に対する競合発生時におけるCPUとクロック周波数を示す説明図である。 図13は、実施の形態1におけるスケジューリング部303の処理を示すフローチャート(その1)である。 図14は、実施の形態1におけるスケジューリング部303の処理を示すフローチャート(その2)である。 図15は、実施の形態1における排他制御部304の利用開始処理を示すフローチャートである。 図16は、実施の形態1における排他制御部304の利用解放処理を示すフローチャートである。 図17は、実施の形態1におけるDVFS制御部305の処理を示すフローチャート(その1)である。 図18は、実施の形態1におけるDVFS制御部305の処理を示すフローチャート(その2)である。 図19は、実施の形態2におけるクロック周波数テーブル1901の記憶内容の一例を示す説明図である。 図20は、CPUs105およびデバイス群205のクロック周波数の設定例を示す説明図である。 図21は、実施の形態2におけるスケジューリング部303の処理を示すフローチャート(その2)である。 図22は、実施の形態2におけるDVFS制御部305の処理を示すフローチャート(その2)である。
以下に添付図面を参照して、開示のマルチコアプロセッサシステム、および電力制御方法の好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステム100の動作)
図1は、実施の形態1におけるマルチコアプロセッサシステム100のアクセス競合時の動作を示す説明図である。符号101で示すブロック図は、マルチコアプロセッサシステム100内の、2つのCPU(Central Processing Unit)がアクセス競合を起こしている状態を示している。また、符号102で示すブロック図は、マルチコアプロセッサシステム100内の、3つのCPUがアクセス競合を起こしている状態を示している。
また、マルチコアプロセッサシステム100には、複数のCPUが含まれるCPUs105、CPUs105からアクセス可能な記憶装置であるメモリ106、消費電力を管理する電力制御ユニット(以下、PMU(Power Management Unit)と表す)107が含まれる。各部は、バス108によって接続されている。CPUs105には、CPU#0〜CPU#3が含まれる。なお、CPUs105には、2以上のCPUが含まれていてもよい。また、PMU107は、CPUs105、メモリ106に対して、クロック線109#0〜クロック線109#4を経由して、クロックを供給している。なお、マルチコアプロセッサシステム100のハードウェアの詳細については、図2にて後述する。
また、グラフ103は、メモリ106に対するアクセス競合発生時に、CPUs105のクロック周波数と消費電力の関係を示したグラフである。また、グラフ104は、メモリ106に対するアクセス競合発生時に、メモリ106のクロック周波数と消費電力の関係を示したグラフである。グラフ103、グラフ104は、横軸がCPUs105やメモリ106のクロック周波数、縦軸が消費電力を示している。
グラフ103では、アクセス競合発生時のCPU数に応じたCPUs105のクロック周波数と消費電力の関係を示している。たとえば、アクセス競合中のCPU数が2である場合、PMU107がCPUs105のうち、アクセス競合中のCPUのクロック周波数を標準値=1000[MHz]から、500[MHz]まで落とす場合を想定する。このとき、クロック周波数を落としてもメモリ106の処理性能がボトルネックとなっており処理時間が変わらない場合、マルチコアプロセッサシステム100の処理能力を落とさずに消費電力を下げることができる。
なお、アクセス競合中のCPU数が2である場合に、CPUs105のうち、アクセス競合中のCPUのクロック周波数を500[MHz]より低く設定すると、処理能力の低下に伴い、メモリ106の処理性能がボトルネックでなくなる場合を想定している。たとえば、アクセス競合中のCPUのクロック周波数を250[MHz]に設定した場合、1000[MHz]で実行したときより処理時間が長くなってしまい、マルチコアプロセッサシステム100の処理能力が低下してしまう。
同様に、アクセス競合中のCPU数が3である場合は、PMU107がCPUs105のうち、アクセス競合中のCPUのクロック周波数を標準値=1000[MHz]から、250[MHz]までクロック周波数を落とすことを想定する。クロック周波数を落としても、メモリ106の処理性能がボトルネックとなっておりアクセス競合が解消する時間が変わらない場合、マルチコアプロセッサシステム100の性能を落とさずに消費電力を下げることができる。
グラフ104では、アクセス競合発生時のCPU数に応じたメモリ106のクロック周波数と消費電力の関係を示している。メモリ106のクロック周波数を増加すると、メモリ106の消費電力が増大する要素もあるが、一方、アクセス競合が解消する時間が短くなり、アクセスに伴うCPUs105、メモリ106の稼働時間が短くなるため、消費電力が減少する要素もある。
グラフ104の例では、たとえば、アクセス競合中のCPU数が2である場合、PMU107がメモリ106のクロック周波数を標準値=400[MHz]から、600[MHz]に上げたときに、消費電力が最も小さくなることを示している。同様に、アクセス競合中のCPU数が3である場合、PMU107がメモリ106のクロック周波数を800[MHz]に上げたときに、消費電力が最も小さくなることを示している。
以上の点より、本実施の形態における電力制御方法は、アクセス競合時に、クロック周波数の変更に伴う消費電力量が、CPUs105のうちアクセス競合を起こしたCPU数によって異なることに着目している。たとえば、アクセス競合中のCPU数が2である符号101に示すブロック図では、PMU107が、CPUs105のうちCPU#0、CPU#1のクロック周波数を500[MHz]に下げ、メモリ106のクロック周波数を600[MHz]に上げる。これにより、マルチコアプロセッサシステム100は、アクセス競合中のCPU数が2の場合において、消費電力を最も削減することができる。
同様に、アクセス競合中のCPU数が3である符号102に示すブロック図では、PMU107が、CPUs105のうちCPU#0〜CPU#2のクロック周波数を250[MHz]に下げ、メモリ106のクロック周波数を800[MHz]に上げる。これにより、マルチコアプロセッサシステム100は、アクセス競合中のCPU数が3の場合において、消費電力を最も削減することができる。
(マルチコアプロセッサシステム100のハードウェア)
図2は、マルチコアプロセッサシステム100のハードウェアを示すブロック図である。マルチコアプロセッサシステム100は、CPUs105と、メモリ106と、PMU107と、デバイス群205、デバイス群206、を含む。
ここで、CPUs105は、マルチコアプロセッサシステム100の全体の制御を司る。また、CPUs105は、シングルコアのプロセッサを並列して接続した全てのCPUを指している。CPUs105は、CPU#0〜CPU#Nを含む。Nは1以上の整数である。CPU#0〜CPU#Nは、それぞれ専用のキャッシュメモリを有してもよい。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるCPUが並列されている形態を例にあげて説明する。
メモリ106は、CPUs105からアクセス可能な記憶装置である。たとえば、メモリ106には、ROM(Read‐Only Memory)201と、RAM(Random Access Memory)202と、フラッシュROMコントローラ203と、フラッシュROM204と、を含む。
ROM201は、ブートプログラムなどのプログラムを記憶している。RAM202は、CPUs105のワークエリアとして使用される。フラッシュROMコントローラ203は、CPUs105の制御に従ってフラッシュROM204に対するデータのリード/ライトを制御する。フラッシュROM204は、フラッシュROMコントローラ203の制御で書き込まれたデータを記憶する記録媒体である。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがデバイス群205、デバイス群206を通して取得した画像データ、映像データなどや、または本実施の形態である電力制御方法を実行するプログラムが格納されていてもよい。また、フラッシュROM204は、たとえば、メモリカード、SDカードなどを採用することができる。
デバイス群205、デバイス群206は、CPUs105からアクセス可能なデバイス群である。デバイス群205、デバイス群206は、たとえば、ユーザに対するインターフェイスとして、ディスプレイ、キーボードなどが挙げられる。ディスプレイは、たとえば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。また、デバイス群205、デバイス群206には、外部との通信を行う周辺デバイスとして、通信デバイスなどが含まれていてもよい。
また、デバイス群205は、ハードウェアで調停するデバイス群であり、デバイス#H0〜デバイス#HMを含む。Mは0以上の整数である。同様に、デバイス群206は、ソフトウェアで調停するデバイス群であり、デバイス#S0〜デバイス#SLを含む。Lは0以上の整数である。また、CPUs105のうち2以上のCPUが、デバイス群205内のデバイスに同時にアクセスする場合に、アクセス競合が発生している。デバイス群205内のデバイスにアクセスするCPUの数を競合アクセス数Chと定義する。同様に、CPUs105のうち2以上のCPUが、デバイス群206のデバイスに同時に排他アクセス要求を行った場合、OS等によるソフトウェアによって調停が行われている。デバイス群206内のデバイスに排他アクセス要求するCPUの数を排他アクセス数Csと定義する。
PMU107は、マルチコアプロセッサシステム100の電源を管理する装置である。具体的に、PMU107は、図2にて図示していないが、CPUs105、メモリ106、デバイス群205、デバイス群206に対して、クロック線を経由してクロックを供給し、電源線を経由して、電源電圧を供給する。なお、PMU107はDVFS制御に対応しており、CPU#0、…、CPU#N、メモリ106、デバイス#H0、…、デバイス#HM、デバイス#S0、…、デバイス#SL、バス108は独立した電力ドメインで区切られている。また、PMU107は、CPUs105、メモリ106、デバイス群205、デバイス群206に供給されているクロック周波数と電圧を変更することが可能である。
なお、メモリ106に関しては、図2上ではデバイス群205、デバイス群206とは別に図示されているが、図3以降の説明では、メモリ106をデバイス群205内の1つのデバイスとしてもよい。理由として、メモリ106はメモリコントローラというハードウェアによって調停されるため、マルチコアプロセッサシステム100は、デバイス群205として扱うことができるためである。また、メモリ106内の一部のアドレス空間において、OSの機能による排他制御を行う場合、マルチコアプロセッサシステム100は、そのアドレス空間について、デバイス群206内の1つのデバイスとして扱ってもよい。
(マルチコアプロセッサシステム100の機能)
図3は、実施の形態1におけるマルチコアプロセッサシステム100の機能を示すブロック図である。マルチコアプロセッサシステム100は、スケジューリング部303と、排他制御部304と、DVFS制御部305と、を含む。この制御部となる機能(スケジューリング部303〜DVFS制御部305)は、記憶装置に記憶されたプログラムをCPU#0〜CPU#Nのいずれかが実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したメモリ106に含まれるROM201、RAM202、フラッシュROM204などである。
また、メモリ106は記憶部306を含み、スケジューリング部303は検出部307を含み、排他制御部304は検出部308を含み、DVFS制御部305は特定部309、特定部310、抽出部311、制御部312を含む。なお、図3では、スケジューリング部303と、排他制御部304と、DVFS制御部305がCPU#0の機能として図示されているが、CPU#0以外のCPU#1〜CPU#Nも、同機能を含んでもよい。
記憶部306は、デバイスにアクセスするCPUの数であるアクセス数に応じて、消費電力量を最小にするCPUのクロック周波数とデバイスのクロック周波数とが格納されたクロック周波数テーブル301を記憶する。また、クロック周波数テーブル301は、デバイス#H0〜デバイス#HM、デバイス#S0〜デバイス#SLそれぞれに存在し、クロック周波数テーブル301#H0〜クロック周波数テーブル301#SLと表記する。また、クロック周波数テーブル301は、CPUのクロック周波数が安定動作可能な最低電圧の値を格納していてもよい。さらに、クロック周波数テーブル301は、デバイスのクロック周波数が安定動作可能な最低電圧の値を格納していてもよい。
また、記憶部306は、CPUs105、デバイス群205、デバイス群206それぞれのクロック周波数の標準値が格納されているクロック周波数標準値テーブル302を記憶する。また、クロック周波数標準値テーブル302は、CPUs105、デバイス群205、デバイス群206のクロック周波数が安定可能な最低電圧の値を格納していてもよい。クロック周波数テーブル301とクロック周波数標準値テーブル302は、メモリ106に格納されている。クロック周波数テーブル301とクロック周波数標準値テーブル302は書き換えを行わないため、たとえば、ROM201内に存在してもよい。クロック周波数テーブル301、クロック周波数標準値テーブル302の詳細は、図11にて後述する。
また、アプリ#H0、アプリ#S0は、CPU#0で実行されるアプリケーションソフトウェア(以下、「アプリ」と記述)であり、アプリ#H1、アプリ#S1は、CPU#1で実行されるアプリである。また、アプリ#H0、アプリ#H1は、デバイス群205内のデバイス#H0に頻繁にアクセスするアプリであると想定し、アプリ#S0は、排他制御部304を経由してデバイス群206内のデバイス#S0にアクセスするアプリであると想定する。また、アプリ#S1も、CPU#1内にある排他制御部を経由してデバイス#S0にアクセスするアプリであると想定する。
スケジューリング部303は、実行可能なアプリの一つを、CPU#0に割り当てる機能を有する。たとえば、スケジューリング部303は、アプリ#H0やアプリ#S0をCPU#0に割り当てる。なお、割り当てられたアプリの情報は、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。また、スケジューリング部303は、アプリを割り当てる際に、デバイス群205内の対象デバイスに対してアクセス競合を発生させるCPU群を検出する。
排他制御部304は、アプリからデバイス群206への利用要求に対して排他制御を提供する機能を有する。たとえば、排他制御部304は、アプリ#S0からのデバイス#S0への利用要求に応じて利用許可を与える。また、排他制御部304は、アプリ#S0からの対象デバイスの利用要求時に他のアプリが対象デバイスの利用許可を有している場合に、アプリ#S0を許可待ちとし、実行可能な他のアプリに切り替えるようにスケジューリング部303に要求する。また、排他制御部304は、利用権の取得時、または解放時に、デバイス群206内の対象アドレスに排他アクセス要求するCPU群を検出する。
DVFS制御部305は、スケジューリング部303、排他制御部304からの検出に応じてアクセス競合の状態を特定し、クロック周波数テーブル301から消費電力量が最小となるCPUのクロック周波数と対象デバイスのクロック周波数を抽出する。抽出後、DVFS制御部305は、PMU107を、対象デバイスにアクセス中のCPUに抽出されたCPUのクロック周波数で動作するように制御する。また、DVFS制御部305は、PMU107を、対象デバイスに抽出されたデバイスのクロック周波数で動作するように制御する。
検出部307は、デバイス群205内の対象デバイスに対してアクセス競合を発生させる特定のコア群を検出する機能を有する。たとえば、検出部307は、アプリ#H0が割り当てられたCPU#0とアプリ#H1が割り当てられたCPU#1を検出する。なお、検出された結果となる検出されたCPUの識別情報は、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。
検出部308は、デバイス群206内の対象デバイスに対して排他アクセスを要求する特定のコア群を検出する。たとえば、検出部307は、デバイス#S0への排他アクセスを要求するアプリ#S0が割り当てられたCPU#0とデバイス#S0への排他アクセスを要求するアプリ#S1が割り当てられたCPU#1を検出する。なお、検出された結果となる検出されたCPUの識別情報は、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。
特定部309は、デバイス群205内の対象デバイスに対するアクセス競合の状態を特定する機能を有する。具体的に、特定部309は、対象デバイスに対してアクセスするCPUの数である競合アクセス数Chを特定する。たとえば、検出部307が、デバイス#H0に対してアクセスするCPU#0とCPU#1を検出した状態を想定する。このとき、特定部309は、デバイス#H0に対するアクセス競合の状態が、競合アクセス数Ch=2である状態として特定する。なお、競合アクセス数は、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。
特定部310は、デバイス群206内の対象デバイスに対する排他アクセスの状態を特定する機能を有する。具体的に、特定部310は、対象デバイスに対して排他アクセスを要求するCPUの数である排他アクセス数Csを特定する。たとえば、検出部308が、デバイス#S0に対して排他アクセスを要求するCPU#0とCPU#1を検出した状態を想定する。このとき、特定部310は、デバイス#S0に対する排他アクセスの状態が、排他アクセス数Cs=2である状態として特定する。なお、排他アクセス数は、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。
抽出部311は、記憶部306によって記憶されたクロック周波数テーブル301から、特定部309によって特定された対象デバイスに対するアクセス競合の状態に応じた対象デバイスのクロック周波数と特定のコア群のクロック周波数とを抽出する機能を有する。
たとえば、特定部309が、デバイス#H0に対するアクセス競合の状態として、競合アクセス数Ch=2を特定した状態を想定する。このとき、抽出部311は、クロック周波数テーブル301#H0の競合アクセス数Ch=2となるレコードを抽出する。これにより、抽出部311は、抽出されたレコード内に含まれるデバイス#H0のクロック周波数と、特定のCPU群のクロック周波数を抽出したことになる。たとえば、抽出したレコード内には、デバイス#H0のクロック周波数として400[MHz]、特定のCPU群となる、CPU#0、CPU#1のクロック周波数として500[MHz]が格納されている。
また、抽出部311は、記憶部306によって記憶されたクロック周波数テーブル301から、特定部310によって特定された対象デバイスに対する排他アクセスの状態に応じた対象デバイスのクロック周波数を抽出する機能を有する。たとえば、特定部310が、デバイス#S0に対する排他アクセスの状態として、排他アクセス数Cs=2を特定した状態を想定する。このとき、抽出部311は、クロック周波数テーブル301#S0の排他アクセス数Cs=2となるレコードを抽出する。これにより、抽出部311は、レコード内に含まれるデバイス#S0のクロック周波数と、特定のCPU群のクロック周波数を抽出したことになる。
また、抽出部311は、クロック周波数テーブル301にクロック周波数に対応する電圧が格納されている場合、デバイスのクロック周波数と対応する電圧、CPU群のクロック周波数と対応する電圧を抽出してもよい。なお、デバイスのクロック周波数とCPUのクロック周波数は、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。
制御部312は、抽出部311によって抽出された対象デバイスのクロック周波数にて対象デバイスを動作させ、また、抽出部311によって抽出された特定のコア群のクロック周波数にて特定のコア群を動作させる機能を有する。たとえば、制御部312は、デバイス#H0を400[MHz]にて動作させ、CPU#0とCPU#1を500[MHz]にて動作させる。
なお、具体的なクロック周波数の制御方法は、たとえば、制御部312が、対象デバイス、またはCPUが属する電力ドメインと、クロック周波数の値をPMU107に通知することである。また、通知方法としては、たとえば、制御部312が、PMU107内の設定レジスタに、前述した電力ドメインの識別情報とクロック周波数の値を書き込むこと等が挙げられる。
また、制御部312は、抽出部311がクロック周波数に対応した電圧も併せて抽出した場合、対象デバイス、または特定のコア群を、抽出したクロック周波数と電圧で動作させてもよい。
このように、実施の形態1におけるマルチコアプロセッサシステム100は、複数のコアのうち、デバイスに対してアクセス競合を発生させる特定のコア群を検出する。また、マルチコアプロセッサシステム100は、デバイスに少なくとも2以上のコアがアクセス競合する状態ごとに、デバイスのクロック周波数と、コア群のクロック周波数と、を記憶する。なお、デバイスのクロック周波数は、デバイスの処理速度を非アクセス競合時以上にさせるクロック周波数である。また、コア群のクロック周波数は、処理速度が非アクセス競合時以上となるデバイスに対してアクセス競合を維持しつつコア数に対応するコア群の処理速度を非アクセス競合時以下にさせるクロック周波数である。
続けて、マルチコアプロセッサシステム100は、検出された特定のコア群によって、デバイスに対するアクセス競合の状態を特定する。特定後、マルチコアプロセッサシステム100は、記憶されたデバイスのクロック周波数とコア群のクロック周波数とから、特定されたデバイスに対するアクセス競合の状態に応じたデバイスのクロック周波数と特定のコア群のクロック周波数とを抽出する。抽出後、マルチコアプロセッサシステム100は、抽出されたデバイスのクロック周波数にてデバイスを動作させ、抽出された特定のコア群のクロック周波数にて特定のコア群を動作させる。
図4は、マルチコアプロセッサシステム100の消費電力の計算例を示す説明図である。マルチコアプロセッサシステム100全体の消費電力は、下記(1)式にて計算できる。
Figure 0005545376
ここで、Pはマルチコアプロセッサシステム100全体の消費電力、NはCPUs105内の最大のCPU番号を示している。Mはハードウェアで調停するデバイス群205内の最大のデバイス番号、Lはソフトウェアで調停するデバイス群206内の最大のデバイス番号を示している。また、Pxxx(fxxx)は、それぞれの電力ドメインで、fxxxのクロック周波数を設定したときの消費電力を示している。xxxに該当するCPUiは、CPUs105のうちi番目のCPUを、MEMはメモリ106を、BUSはバス108を、DEViはi番目のデバイス群205、デバイス群206を、PMUはPMU107を示している。
DVFS制御により、PMU107以外は個別にクロック周波数を設定できるため、電力ドメインごとに設定されたクロック周波数での消費電力の合計が、マルチコアプロセッサシステム100全体の消費電力になる。なお、電圧に関しては、設定されたクロック周波数で安定動作する最低電圧を設定すればよいため、クロック周波数が決定されると、電圧も一意に決定されることになる。本実施の形態におけるマルチコアプロセッサシステム100は、CPUs105のうちアクセス競合中のCPUのクロック周波数を下げるか、または、メモリ106、デバイス群205、デバイス群206のうち、競合クロック周波数を上げるか、を行う。以下、図5〜図9にて、ハードウェアによる調停の動作、ソフトウェアによる調停の動作について詳細に説明する。
図5は、ハードウェアによる調停を受けるデバイス#S0への動作シーケンスを示す説明図である。図5では、CPU#0とCPU#1が、デバイス#H0を同時に利用する場合を想定している。符号501に示す説明図では、CPU#0とCPU#1のクロック周波数を変化させない場合の動作を示しており、符号502に示す説明図では、CPU#0とCPU#1のクロック周波数を低下させた場合の動作を示している。また、CPU#0とCPU#1で実行されるアプリには、デバイス#H0に頻繁にアクセスするという情報がメモリ106内に記憶されている。また、CPU#0で実行するアプリをアプリ0、CPU#1で実行するアプリをアプリ1と想定する。
ここで、デバイス#H0に頻繁にアクセスするアプリとは、単位時間あたりに特定の閾値以上デバイス#H0にアクセスするアプリである。たとえば、特定の閾値は、1秒間に1000回以上といった記述を設定する。たとえば、マルチコアプロセッサシステム100は、音声を再生するオーディオデバイスに対して、音声ファイルを再生・編集するプロセス内の音楽再生を行う音声再生アプリを、頻繁にアクセスするアプリとして設定してもよい。また、音声ファイルをブラウジングするブラウザアプリも、ユーザの操作に対応する操作音を出力する場合オーディオデバイスを利用することになる。しかし、操作音は、再生時間が短く短時間あたりのアクセス回数が閾値を超えないため、マルチコアプロセッサシステム100は、オーディオデバイスを、頻繁にアクセスするアプリとして設定しない。
初めに、符号501で示す動作について説明を行う。時刻t1の時点で、CPU#0、CPU#1が、それぞれアプリ0、アプリ1を実行開始する。また、時刻t1にて、CPU#0がアプリ0の要求によりデバイス#H0に対して利用要求を通知する。デバイス#H0は、CPU#0以外の他のCPUから利用されていないので、時刻tHD2にて利用許可をCPU#0に通知する。CPU#0は、時刻t1〜時刻tHD2となる利用許可を受け取る間、許可待ち状態となり、停止している。
利用許可を受け取ったCPU#0は、ハードウェアが処理を行った後、時刻tHD3にてデバイス#H0のデータを読み込む読込要求を通知する。なお、ハードウェアの処理とは、CPUのメモリ106等から読み込んだ命令セット以外のハードウェアの処理である。命令セット以外のハードウェアの処理とは、たとえば、メモリ106の調停を行うメモリコントローラの処理、または、CPUs105のキャッシュメモリ間の整合性をとるキャッシュコヒーレンシ機構の処理等である。
読込要求を受け取ったデバイス#H0は、読込処理を実行し、時刻tHD5にて処理結果をCPU#0に通知する。CPU#0は、時刻tHD3〜時刻tHD5となる処理結果を受け取る間、データ待ち状態となり、停止している。
また、時刻tHD4にて、CPU#1がデバイス#H0に対して利用要求を通知する。デバイス#H0は、読込処理を完了する時刻tHD6にて、利用許可をCPU#1に通知する。また、CPU#1は、時刻tHD4〜時刻tHD6となる利用許可を受け取る間、許可待ち状態となり、停止している。
また、利用許可を受け取ったCPU#1は、時刻tHD7にてデバイス#H0のデータを読み込む読込要求を通知する。読込要求を受け取ったデバイス#H0は、読込処理を実行し、時刻tHD9にて処理結果をCPU#1に通知する。また、時刻tHD8にて、CPU#0がデバイス#H0に対して利用要求を通知する。このとき、デバイス#H0は、読込処理が完了後の時刻tHD10にて、利用許可をCPU#0に通知する。利用許可を受け取ったCPU#0は、時刻tHD11にてデバイス#H0に対して読込要求を通知する。
なお、CPUs105と、デバイス群205、デバイス群206とのデータ送受信は、バス108の電気信号を用いている。CPUs105のうちいずれかのCPUが、デバイス群205に要求を通知した場合、デバイス群205から要求に対する応答の信号を受けるまで、CPUの動作が停止することになる。図5において、CPU#0は時刻tHD5〜時刻tHD8にて、アプリ0を実行している。
次に、符号502で示す動作について説明を行う。時刻t1の時点で、CPU#0、CPU#1が、それぞれアプリ0、アプリ1を実行開始する。アプリを実行する際、マルチコアプロセッサシステム100は、同一デバイスに対して頻繁にアクセスするアプリを実行するCPUのクロック周波数を低下させる。具体的に、マルチコアプロセッサシステム100は、CPU#0、CPU#1のクロック周波数を低下させる。
符号502での時刻t1〜時刻tHD3におけるCPU#0は、デバイス#H0に依存する処理と、メモリコントローラまたはキャッシュコヒーレンシ機構といったCPUのクロック周波数に影響しない処理であるため、符号501で示した処理時間に変更がない。CPU#1の動作については、CPU#1のクロック周波数が低下しているためアプリ1の処理が遅くなり、デバイス#H0に利用要求を通知する時刻が、符号501で示した時刻tHD4よりも後の時刻である時刻tHD4’となる。
しかしながら、図5のように、複数のCPUが1つのデバイスに頻繁にアクセスする場合、デバイスからの応答待ちがボトルネックとなるため、許可待ち状態の時間が短くなるだけで、マルチコアプロセッサシステム100の処理性能は低下しない。符号502での例にて、CPU#1が時刻tHD4’にて利用要求の通知後に利用許可を受ける時刻は、CPU#0の読込処理に対する時刻tHD5の後である時刻tHD6であり、符号501で示す動作と同じタイミングである。したがって、マルチコアプロセッサシステム100の処理性能は変わらない。
また、CPU#0は、時刻tHD5以降でアプリ0を続行する。CPU#0のクロック周波数は、符号501で動作したクロック周波数より低下しているためアプリ0の処理が遅くなり、デバイス#H0への利用要求の時刻が、符号501で示した時刻tHD8よりも後の時刻である時刻tHD8’となる。利用要求の時刻が遅れても、デバイス#H0から利用許可を受ける時刻は時刻tHD10のままであり、符号501で示す動作と同じタイミングであるため、マルチコアプロセッサシステム100の処理性能は変わらない。
このように、マルチコアプロセッサシステム100は、マルチコアプロセッサシステム100全体の処理性能を維持しつつハードウェア調停を行うデバイスを利用しているCPUのクロック周波数を、特定のクロック周波数まで落とすことができる。特定のクロック周波数とは、たとえば、符号502の例では、CPU#1によるアプリ1の利用要求を通知する時刻tHD4’が時刻tHD5と一致する状態となるクロック周波数である。
この特定のクロック周波数より下げた場合、デバイス#H0のCPU#1への利用許可の通知が、時刻tHD6より遅くなるため、マルチコアプロセッサシステム100の処理性能が低下することになる。したがって、競合中のCPUのクロック周波数が特定のクロック周波数に設定された状態が、マルチコアプロセッサシステム100の処理性能を落とさずに最も消費電力を削減できる状態となる。
なお、マルチコアプロセッサシステム100の処理性能を落とさないクロック周波数の範囲については、デバイス群205をCPUs105で同時利用させて、同時利用数とクロック周波数とを変化させ、処理性能が低下していないかを判断する。処理性能が低下していない場合、マルチコアプロセッサシステム100は、処理性能が低下しなかったときの同時利用数とクロック周波数を周波数テーブルに記憶する。
図6は、ハードウェアによる調停を受けるデバイス#H0のクロック周波数を上げた場合の動作シーケンスを示す説明図である。図6では、符号501の状態から、デバイス#H0のクロック周波数を上げて、処理速度を速くした状態である。また、図6にて、アプリ0、アプリ1の開始時刻は、図5で示した時刻t1と同時刻である。
また、デバイス#H0のクロック周波数を上げた場合の調停のシーケンスは、符号501で示した調停のシーケンスと各処理が実行される時刻を除いて等しくなる。具体的には、図6で示す時刻tHU2〜時刻tHU11を、時刻tHD2〜時刻tHD11に置き換えることで、図6で示すシーケンスと符号501で示したシーケンスは、処理が実行される時刻を除いて等しい。したがって、図6における各時刻におけるCPU#0、CPU#1、デバイス#H0の処理内容の説明は、符号501で示す対応する時刻での処理と等しいため、説明を省略する。下記説明では、デバイス#H0の処理速度が速くなったことにより、処理を行う時刻が変更される箇所について説明を行う。
デバイス#H0は、クロック周波数が上がったことにより処理速度が速くなる。図6の例では、時刻tHU3にてCPU#0が読込要求を行うと、デバイス#H0は、図5で示した時刻tHD5より早い時刻である時刻tHU5にて読込処理を完了して処理結果を通知する。さらに、デバイス#H0は、時刻tHD6より早い時刻である時刻tHU6にて利用許可をCPU#1に通知する。
続けて、CPU#1は、時刻tHU7にて、デバイス#H0に読込要求を通知する。読込要求を受け取ったデバイス#H0は、読込処理を実行し、時刻tHU9にて処理結果をCPU#1に通知する。デバイス#H0のクロック周波数が上がっているため、デバイス#H0は、読込処理を、時刻tHD7〜時刻tHD9より短い時間となる時刻tHU7〜時刻tHU9で完了する。
また、CPU#0は、時刻tHU8にて利用要求をデバイス#H0に通知する。通知を受けたデバイス#H0は、読込処理が完了後の時刻tHU10にて、利用許可をCPU#0に通知する。利用許可を受け取ったCPU#0は、時刻tHU11にてデバイス#H0に対して読込要求を通知する。このとき、許可待ち時間となる時刻tHU8〜時刻tHU10は、符号501で示したCPU#0の許可待ち時間となる時刻tHD8〜時刻tHD10より短くなる。
このように、デバイス#H0のクロック周波数を上げたことでデバイス#H0の消費電力は増加するが、マルチコアプロセッサシステム100全体の処理時間が短くなるため、マルチコアプロセッサシステム100の消費電力量を小さくすることができる。なお、具体的な消費電力量の計算例は、図9にて後述する。
図7は、ソフトウェアによる調停を受けるデバイス#S0の動作シーケンスを示す説明図である。図7では、CPU#0がアプリ0を実行し、CPU#1が、アプリ1、アプリ2を時分割で実行している。また、アプリ0〜アプリ2は、デバイス#S0を利用するアプリであると想定する。さらに、CPUs105がデバイス#S0にアクセスする場合に、OSの排他アクセスを実現するライブラリを用いて調停を行うことを想定する。排他アクセスを実現するライブラリとしては、ミューテックス、セマフォ等が存在する。
また、OSの動作としては、様々な実装形態が存在する。たとえば、一つのCPUで実行しているOSが、他のCPU全てを管理してもよい。または、OSがCPUs105の各々で実行され、そのうち特定のOSが、他のCPUで実行するOSを管理してもよい。どのような実装であっても、マルチコアプロセッサシステム100で実行中のアプリのうち、1つのアプリにデバイスへの排他アクセスを許可するため、図7では、OSを1つに纏めて表示している。
時刻tS1では、CPU#0がアプリ0を実行し、CPU#1がアプリ1を実行している。アプリ2は割当待ち状態である。時刻tS2にて、アプリ0は、デバイス#S0の利用要求をOSに通知する。利用要求を受け取ったOSは、時刻tS2の時点で他のアプリがデバイス#S0を利用していないと判断し、時刻tS3にて、アプリ0に利用許可を通知する。
なお、ソフトウェアで調停する場合は、ハードウェアで調停する場合と異なり、利用許可を受けたアプリは、複数回デバイスを利用することができる。また、利用許可を受けたアプリは、デバイスに処理要求を通知した後も自身の処理を継続することが可能である。もし、利用許可を受けたアプリがデバイスの処理結果を受け取ってない時点で自身の処理にてデバイスの処理結果を用いたい場合、利用許可を受けたアプリは、デバイスの処理結果を受け取るまで待つ。最終的に、利用許可を受けたアプリは、デバイスの利用が終了した後にOSに開放通知を行いデバイスの利用終了を宣言する。
時刻tS3にて利用許可を受け取ったアプリ0は、時刻tS4にて、処理要求の一つである読込要求をデバイス#S0に通知し、自身の処理を続行する。アプリ0は、時刻tS7にて、自身の処理の続行中に読込処理の結果を待つため、処理待ち状態になる。
また、時刻tS5にて、アプリ1が利用要求をOSに通知する。アプリ1からの利用要求を受けたOSは、時刻tS5の時点で他のアプリがデバイス#S0を利用していると判断し、アプリ1を許可待ち状態に設定する。また、OSは、時刻tS6にて、許可待ち状態となったアプリ1の代わりに実行するアプリを決定するためスケジュール処理を行う。スケジュール処理を行った結果、OSは、アプリ2をCPU#1に実行させる。
時刻tS4にて読込要求を受け取ったデバイス#S0は、時刻tS8にて処理結果を通知する。処理結果を受け取ったアプリ0は、時刻tS9にて、再びデバイス#S0に対して読込要求を通知し、時刻tS12にて処理待ち状態になる。
また、時刻tS10にて、アプリ2が利用要求をOSに通知する。アプリ2からの利用要求を受けたOSは、時刻tS10の時点で他のアプリがデバイス#S0を利用していると判断する。また、OSは、時刻tS11にて、アプリ2の代わりに実行するアプリを決定するためスケジュール処理を行う。スケジュール処理を行った結果、CPU#1に実行させるアプリがないと判断したOSは、CPU#1の動作を停止させる。
時刻tS9にて読込要求を受け取ったデバイス#S0は、時刻tS13にて処理結果を通知する。処理結果を受け取った後、アプリ0は、時刻tS14にてデバイス#S0の解放通知をOSに通知する。解放通知を受け取ったOSは、時刻tS15にて、許可待ちとなっているアプリのうち、最初に許可待ちとなったアプリ1に停止解除を通知しつつ、デバイス#S0の利用許可を通知する。停止解除とデバイス#S0の利用許可を受け取ったアプリ1は、処理を続行する。アプリ2は許可待ち状態となる。
図8は、ソフトウェアによる調停を受けるデバイス#S0のクロック周波数を上げた場合の動作シーケンスを示す説明図である。図8では、図7のデバイス#S0のクロック周波数を上げて、処理速度を速くした状態である。また、図8にて、アプリ0〜アプリ2の開始時刻は、図7で示した時刻tS1と同時刻である。
また、デバイス#S0のクロック周波数を上げた場合の調停のシーケンスは、図7で示した調停のシーケンスと各処理が実行される時刻を除いて等しくなる。具体的には、図8で示す時刻tSU8〜時刻tSU15を、時刻tS8〜時刻tS15に置き換えることで、図8で示すシーケンスと図7で示したシーケンスは、処理が実行される時刻を除いて等しくなる。したがって、図8における各時刻におけるアプリ0〜アプリ2、OS、デバイス#H0の処理内容の説明は、図7で示す対応する時刻での処理と等しいため、説明を省略する。下記説明では、デバイス#S0の処理速度が速くなったことにより、処理を行う時刻が変更される箇所について説明を行う。
デバイス#S0は、時刻tS2による利用要求にて、クロック周波数が上がったことにより処理速度が速くなる。図8の例では、時刻tS4にてアプリ0が読込要求を行うと、デバイス#S0は、図7で示した時刻tS8より早い時刻である時刻tSU8にて読込処理を完了して処理結果をアプリ0に通知する。これにより、時刻tS7〜時刻tSU8となるアプリ0の処理待ち時間が、図7での処理待ち状態の時間となる時刻tS7〜時刻tS8よりも短くなる。
同様に、時刻tSU9にてアプリ0が再度読込要求を行うと、デバイス#S0は、時刻tSU13にて読込処理を完了して処理結果をアプリ0に通知する。これにより、時刻tSU12〜時刻tSU13となるアプリ0の処理待ち時間が、図7での処理待ち状態の時間となる時刻tS12〜時刻tS13よりも短くなる。また、時刻tS5〜時刻tSU15となるアプリ1の許可待ち状態の時間と動作停止中の時間が、図7での許可待ち状態の時間と動作停止中の時間である時刻tS5〜時刻tS15よりも短くなる。
このように、デバイス#S0のクロック周波数を上げたことでデバイス#S0の消費電力は増加するが、マルチコアプロセッサシステム100全体の処理時間が短くなるため、マルチコアプロセッサシステム100の消費電力量を小さくすることができる。なお、具体的な消費電力量の計算例は、図10にて後述する。
図9は、ハードウェアによる調停を受けるデバイス群205のクロック周波数の変化に伴う消費電力量の説明図である。図9では、CPU#x〜CPU#yのCh個のCPUが、デバイス#Hzに頻繁にアクセスするアプリを実行中であると想定する。初めに、CPUs105のクロック周波数を下げることによる消費電力量の差分ΔWCPUは、下記(2)式にて計算できる。
Figure 0005545376
ここで、fCPUNEWは、変更後のCPU#x〜CPU#yのクロック周波数を示し、fCPUORGは、変更前のCPU#x〜CPU#yのクロック周波数を示し、tは、競合を起こしている時間を示している。また、デバイス#Hzのクロック周波数を上げることによる消費電力量の差分ΔWDEVは、下記(3)式にて計算できる。
Figure 0005545376
ここで、fDEVzNEWは、変更後のデバイス#Hzのクロック周波数を示し、fDEVzORGは、変更前のデバイス#Hzのクロック周波数を示し、Δtは、処理速度の上昇によって短縮された処理時間を示す。また、(3)式の第1項は、デバイス#Hzによる消費電力量の増加分を示しており、第2項は、処理時間の短縮による消費電力量の削減分を示している。(2)式、(3)式を用いて、デバイス#Hzのクロック周波数の変化に伴うマルチコアプロセッサシステム100全体の消費電力量の差分ΔWは、下記(4)式にて計算できる。
Figure 0005545376
(2)式〜(4)式を用いて、開発装置等が、設計段階にて競合アクセス数Chに応じた消費電力量Wが最小となるCPU#x〜CPU#yのクロック周波数と、デバイス#Hzのクロック周波数とを算出する。算出された結果は、クロック周波数テーブル301#Hzに格納される。なお、(2)式〜(4)式にて、tは一定であり、Δtは、クロック周波数の変化率((fDEVzNEW−fDEVzORG)/fDEVzORG)とtに比例する。したがって、(2)式〜(4)式は、最初に測定した周波数と電力の対応と、CPUとデバイスのクロック周波数と、デバイス群205を利用しているCPU数をパラメータとして算出することができる。
図10は、ソフトウェアによる調停を受けるデバイス群206のクロック周波数の変化に伴う消費電力量の説明図である。図10では、CPU#x〜CPU#yのCs個のCPUが、デバイス#Szを利用するアプリによって、デバイス#Szに対する排他アクセスを要求していると想定する。デバイス#Szのクロック周波数の変化に伴うマルチコアプロセッサシステム100全体の消費電力量の差分ΔWは、下記(5)式にて計算できる。
Figure 0005545376
ここで、(5)式の第1項は、デバイス#Szのクロック周波数を上げたことによる消費電力量の増加分を示している。(5)式の第2項は、処理時間が短縮したことによるデバイス#Szの削減分と、CPUs105のうちデバイス#Szを利用するCPUの消費電力量の削減分を示している。(5)式の第3項は、CPUs105のうち行う処理がない排他アクセス数Cs個分のCPUの動作を止めたことによる消費電力量の削減分を示している。
(5)式を用いて、開発装置等が、設計段階にて排他アクセス数Csに応じた消費電力量Wが最小となるCPU#x〜CPU#yのクロック周波数と、デバイス#Szのクロック周波数とを算出する。算出された結果は、クロック周波数テーブル301#Szに格納される。
図11は、消費電力量の変化例と、実施の形態1におけるクロック周波数テーブル301の記憶内容の一例を示す説明図である。図11では、競合中のデバイスがデバイス#H0である場合の消費電力量の変化量を示すグラフ1101と、グラフ1101の値を基に生成されたクロック周波数テーブル301#H0と、クロック周波数標準値テーブル302を示している。
グラフ1101は、競合中のデバイスがデバイス#H0である場合のマルチコアプロセッサシステム100全体の消費電力量の変化量を示しており、横軸が競合中のCPUのクロック周波数を示しており、縦軸が消費電力量の増減量を示している。また、PMU107で変更できるクロック周波数としては、CPUs105のクロック周波数の標準値である1000[MHz]と、500[MHz]、250[MHz]であると想定する。また、デバイス#H0のクロック周波数の変更可能な値としては、標準値である400[MHz]と、600[MHz]、800[MHz]であると想定する。
クロック周波数テーブル301#H0は、競合アクセス数、CPUクロック周波数、CPU電圧、デバイスクロック周波数、デバイス電圧、という5つのフィールドを含む。競合アクセス数フィールドには、CPUs105のうち、デバイス#H0に対して競合中のCPU数が格納される。CPUクロック周波数フィールドには、競合アクセス数に対応したマルチコアプロセッサシステム100全体の消費電力量が最も削減されるCPUのクロック周波数の設定値が格納される。CPU電圧フィールドには、CPUクロック周波数フィールドの格納値でCPUのクロック周波数が設定された場合に、安定動作可能な最低電圧の値が格納される。
デバイスクロック周波数フィールドには、競合アクセス数に対応したマルチコアプロセッサシステム100全体の消費電力量が最も削減されるデバイス#H0のクロック周波数の設定値が格納される。デバイス電圧フィールドには、デバイスクロック周波数フィールドの格納値でデバイスのクロック周波数が設定された場合に、安定動作可能な最低電圧の値が格納される。たとえば、CPUクロック周波数フィールドに500[MHz]、CPU電圧フィールドに1.15[V]と設定されていれば、PMU107は、競合中のCPUのクロック周波数を500[MHz]、電圧を1.15[V]に設定する。
クロック周波数標準値テーブル302は、デバイス名称、クロック周波数という2つのフィールドを含む。デバイス名称フィールドには、CPUs105、デバイス#H0〜デバイス#HM、デバイス#S0〜デバイス#SLの名称、またはID(IDentification)等といったデバイスを一意に特定可能な値が格納される。クロック周波数フィールドには、デバイス名称フィールドに格納されたCPUs105、またはデバイス群205、デバイス群206のクロック周波数の標準値が格納されている。
たとえば、CPUs105のクロック周波数の標準値として、1000[MHz]が格納されている。なお、クロック周波数標準値テーブル302にも、クロック周波数の標準値に対応する、安定動作可能な最低電圧の値を格納するフィールドがあってもよい。
たとえば、競合アクセス数=2である場合は、CPUのクロック周波数が500[MHz]でありデバイス#H0のクロック周波数が400[MHz]の時に、消費電力量の削減量が最も大きくなる。したがって、クロック周波数テーブル301#H0の競合アクセス数=2のレコードには、CPU数クロック周波数=500[MHz]、デバイスクロック周波数=400[MHz]がそれぞれ格納される。なお、グラフ1101にて、競合アクセス数が2となる場合のCPUクロック周波数=250[MHz]となる点がプロットしていないのは、CPUクロック周波数=250[MHz]にてアクセス競合が解消し処理性能が低下してしまうことを示している。
同様に、競合アクセス数=3である場合は、CPUのクロック周波数が250[MHz]でありデバイス#H0のクロック周波数が400[MHz]の時に、消費電力量の削減量が最も大きくなる。したがって、クロック周波数テーブル301#H0の競合アクセス数=3のレコードには、CPU数クロック周波数=250[MHz]、デバイスクロック周波数=400[MHz]がそれぞれ格納される。
同様に、競合アクセス数=4である場合は、CPUのクロック周波数が250[MHz]でありデバイス#H0のクロック周波数が600[MHz]の時に、消費電力量の削減量が最も大きくなる。したがって、クロック周波数テーブル301#H0の競合アクセス数=4のレコードには、CPU数クロック周波数=250[MHz]、デバイスクロック周波数=600[MHz]がそれぞれ格納される。
このように、マルチコアプロセッサシステム100は、クロック周波数テーブル301、クロック周波数標準値テーブル302を参照し、競合アクセス数に応じたCPUs105のうち競合中のCPUのクロック周波数と対象デバイスのクロック周波数を設定する。後述する図12にて、競合アクセス数に応じた競合中のCPUのクロック周波数と対象デバイスのクロック周波数の設定例を示す。
なお、図11では、ハードウェアによる調停を受けるデバイス群205に対して説明したが、ソフトウェアによる調停を受けるデバイス群206でも、同様の操作を行い、クロック周波数テーブル301#Sxを生成する。なお、クロック周波数テーブル301#Sxは、競合アクセス数フィールドの代わりに排他アクセス数フィールドを持つ。
また、(5)式より、デバイス群206に対して排他アクセスが競合した場合、排他アクセスが競合中のCPUに関して、クロック周波数を標準値に設定する、または、動作を停止するといった制御を行い、クロック周波数を低く設定するという制御を行わない。したがって、クロック周波数テーブル301#SxのCPU数クロック周波数フィールドは、存在しなくてもよい。
図12は、デバイス#H0に対する競合発生時におけるCPUとクロック周波数を示す説明図である。図12では、CPU#0〜CPU#3に、デバイス#H0に頻繁にアクセスするアプリ0〜アプリ3が割り当てられることを想定する。なお、CPU#0〜CPU#3とデバイス#H0との利用要求、利用許可、読込要求、処理結果といった通知に関しては、図5、図6で説明を行っているため、図12では説明を省略する。図12では、競合アクセス数Chの変化に伴ったCPU#0〜CPU#3のクロック周波数とデバイス#H0のクロック周波数の変化について説明を行う。
時刻t1〜時刻t2では、CPU#0は、アプリ0が割り当てられており、CPU#1〜CPU#3には、デバイス#H0に頻繁にアクセスを行わないアプリが割り当てられている。したがって、時刻t1〜時刻t2での競合アクセス数Chは1であり、競合が発生していない状態である。マルチコアプロセッサシステム100は、CPU#0〜CPU#3のクロック周波数を1000[MHz]に設定し、デバイス#H0のクロック周波数を400[MHz]に設定する。
時刻t2にて、CPU#1にアプリ1が割り当てられると、競合アクセス数Chが2となる。したがって、マルチコアプロセッサシステム100は、時刻t2にて、CPU#0、CPU#1のクロック周波数を、500[MHz]に設定する。なお、デバイス#H0のクロック周波数は、競合アクセス数Ch=2でも400[MHz]となる。また、デバイス#H0に頻繁にアクセスを行わないアプリを実行中のCPU#2、CPU#3のクロック周波数は、1000[MHz]のままである。
続けて、時刻t3にて、CPU#2にアプリ2が割り当てられると、競合アクセス数が3となる。したがって、マルチコアプロセッサシステム100は、時刻t3にて、CPU#0〜CPU#2のクロック周波数を、250[MHz]に設定する。なお、デバイス#H0のクロック周波数は、競合アクセス数=3でも400[MHz]となる。また、デバイス#H0に頻繁にアクセスを行わないアプリを実行中のCPU#3のクロック周波数は、1000[MHz]のままである。
続けて、時刻t4にて、CPU#3にアプリ3が割り当てられると、競合アクセス数Chが4となる。したがって、マルチコアプロセッサシステム100は、時刻t4にて、CPU#0〜CPU#3のクロック周波数を、250[MHz]に設定する。また、マルチコアプロセッサシステム100は、デバイス#H0のクロック周波数を600[MHz]に設定する。
時刻t5にて、CPU#0がアプリ0の割当を終了し、CPU#1がアプリ1の割当を終了すると、競合アクセス数Chが2となる。したがって、マルチコアプロセッサシステム100は、時刻t5にて、CPU#2、CPU#3のクロック周波数を、500[MHz]に設定する。また、マルチコアプロセッサシステム100は、デバイス#H0のクロック周波数を400[MHz]に設定する。また、CPU#0、CPU#1は、時刻t5以降ではデバイス#H0に頻繁にアクセスを行わないアプリを実行すると想定する。したがって、マルチコアプロセッサシステム100は、CPU#0、CPU#1のクロック周波数を1000[MHz]に設定する。
時刻t6にて、CPU#2がアプリ2の割当を終了すると、競合アクセス数Chが1となる。したがって、マルチコアプロセッサシステム100は、時刻t6にて、CPU#3のクロック周波数を、1000[MHz]に設定する。なお、デバイス#H0のクロック周波数は、競合アクセス数Ch=1でも400[MHz]となる。また、CPU#2は、時刻t6以降ではデバイス#H0に頻繁にアクセスを行わないアプリを実行すると想定する。したがって、マルチコアプロセッサシステム100は、CPU#2のクロック周波数を1000[MHz]に設定する。
このように、マルチコアプロセッサシステム100は、デバイス群205の競合に対して、デバイス群205に頻繁にアクセスするアプリが割り当てられたら競合アクセス数Chを1増加し、割当終了したら競合アクセス数Chを1減少する。そして、マルチコアプロセッサシステム100は、競合アクセス数Chに応じて、クロック周波数テーブル301を参照し、競合中のCPUと、対象デバイスのクロック周波数を設定する。
なお、図示していないが、マルチコアプロセッサシステム100は、ソフトウェアで調停するデバイス群206の競合に対してもほぼ等しい動作を行う。具体的な差分として、マルチコアプロセッサシステム100は、デバイス群206に対する利用要求を受け付けた際に、割り当てるアプリがなくCPUが停止した場合、排他アクセス数Csを1増加する。また、マルチコアプロセッサシステム100は、利用解放通知を受け付けて、CPUの停止を解除した場合、排他アクセス数Csを1減少する。
マルチコアプロセッサシステム100は、図11に示したクロック周波数テーブル301、クロック周波数標準値テーブル302を利用して、図13〜図16に示す処理を実行する。また、スケジューリング部303、排他制御部304、DVFS制御部305の各処理は、CPUs105に含まれる全てのCPUによって実行されるが、図13〜図16ではCPU#0が実行することを想定して説明を行う。
図13は、実施の形態1におけるスケジューリング部303の処理を示すフローチャート(その1)である。スケジューリング部303の処理は、CPU#0にアプリの割当を決定する契機に都度実行される。具体的には、スケジューリング部303は、複数のアプリがタイムスライスで切り替えられている場合、タイムスライス時間が満了した都度実行される。また、スケジューリング部303は、排他制御部304からの要求で実行される場合もある。
CPU#0は、自CPUに割り当てるアプリを決定する(ステップS1301)。決定後、CPU#0は、割当可能なアプリが存在するか否かを判断する(ステップS1302)。割当可能なアプリが存在しない場合(ステップS1302:No)、CPU#0は、自CPU内にデバイスに対して許可待ち状態となっているアプリが存在するか否かを判断する(ステップS1303)。
許可待ち状態となっているアプリが存在する場合(ステップS1303:Yes)、CPU#0は、対象デバイス識別情報と排他アクセス数Csを、排他アクセス数変更情報として生成する(ステップS1304)。なお、ステップS1303:Yesのルートを通るのは、後述する図15にて、排他制御部304からスケジューリング要求が到達した場合である。また、対象デバイス識別情報は、デバイス#H0〜デバイス#HM、デバイス#S0〜デバイス#SLのうち、対象デバイスを一意に特定する情報である。対象デバイス識別情報として、たとえば、名称、ID等が挙げられる。
また、排他アクセス数Csは、現在対象デバイスに対して待ち状態となった結果停止しているCPUの数である。ステップS1304の時点では、自CPUはまだ停止していないが、ステップS1304の処理での排他アクセス数Csは、停止しているCPUの数に、これから停止する自CPUの分として1を加えた数値を設定する。
生成後、CPU#0は、DVFS制御部305に、排他アクセス数変更を通知する(ステップS1305)。なお、ステップS1305の処理にて行われる通知のデータには、排他アクセス数変更情報も含まれる。許可待ち状態となっているアプリが存在しない場合(ステップS1303:No)、またはステップS1305の処理後、CPU#0は、DVFS制御部305に、自CPUの動作を停止させるように通知する(ステップS1306)。通知後、CPU#0は、スケジューリング部303の処理を終了する。
また、割当可能なアプリが存在する場合(ステップS1302:Yes)、CPU#0は、自CPUに割り当てられているアプリの変更を検出したか否かを判断する(ステップS1307)。変更を検出しなかった場合(ステップS1307:No)、CPU#0は、スケジューリング部303の処理を終了する。なお、変更を検出しなかった場合としては、たとえば、変更前のアプリと変更後のアプリとが一致する場合である。変更を検出した場合(ステップS1307:Yes)、CPU#0は、変更前のアプリを取得する(ステップS1308)。取得後の処理は、図14にて後述する。
図14は、実施の形態1におけるスケジューリング部303の処理を示すフローチャート(その2)である。ステップS1308の終了後、CPU#0は、変更前のアプリがデバイスに頻繁にアクセスするアプリか否かを判断する(ステップS1401)。変更前のアプリがデバイスに頻繁にアクセスするアプリである場合(ステップS1401:Yes)、CPU#0は、変更前のアプリと同一のデバイスに頻繁にアクセスするアプリを実行するCPU識別情報を取得する(ステップS1402)。なお、CPU識別情報とは、CPUを一意に特定する情報である。CPU識別情報として、たとえば、名称、ID等が挙げられる。
取得後、CPU#0は、対象デバイス識別情報と取得したCPU識別情報と競合アクセス数Chとを、競合アクセス数変更情報として生成する(ステップS1403)。なお、CPU情報は、競合アクセス数Ch分存在する。また、ステップS1407の処理時点の競合アクセス数Chは、アプリが割り当てられる前の競合アクセス数Chより1小さい値となる。
生成後、CPU#0は、DVFS制御部305に、競合アクセス数変更(ハードウェア)を通知する(ステップS1404)。なお、ステップS1404の処理にて行われる通知のデータには、競合アクセス数変更情報も含まれる。通知後、CPU#0は、DVFS制御部305に、自CPUのクロック周波数を標準値に設定するように通知する(ステップS1405)。
ステップS1405の終了後、または、変更前のアプリがデバイスに頻繁にアクセスするアプリでない場合(ステップS1401:No)、CPU#0は、変更後のアプリがデバイスに頻繁にアクセスするアプリか否かを判断する(ステップS1406)。変更後のアプリがデバイスに頻繁にアクセスするアプリである場合(ステップS1406:Yes)、CPU#0は、変更後のアプリと同じデバイスに頻繁にアクセスするアプリを実行するCPU識別情報を取得する(ステップS1407)。
取得後、CPU#0は、対象デバイス情報と取得したCPU識別情報と競合アクセス数Chを、競合アクセス数変更情報として生成する(ステップS1408)。なお、CPU情報は、競合アクセス数Ch分存在する。また、ステップS1408の処理時点の競合アクセス数Chは、変更前のアプリがデバイスに頻繁にアクセスするアプリでない場合、アプリが割り当てられる前の競合アクセス数より1大きい値となる。
生成後、CPU#0は、DVFS制御部305に、競合アクセス数変更を通知する(ステップS1409)。なお、ステップS1409の処理にて行われる通知のデータには、競合アクセス数変更情報も含まれる。ステップS1409の終了後、または、変更後のアプリがデバイスに頻繁にアクセスするアプリでない場合(ステップS1406:No)、CPU#0は、スケジューリング部303の処理を終了する。
図15は、実施の形態1における排他制御部304の利用開始処理を示すフローチャートである。CPU#0は、対象デバイスの利用要求をアプリから受け付ける(ステップS1501)。受付後、CPU#0は、対象デバイスが他のアプリによって利用中か否かを判断する(ステップS1502)。対象デバイスが他のアプリによって利用中である場合(ステップS1502:Yes)、CPU#0は、要求元のアプリの状態を、対象デバイスに対する許可待ち状態として設定する(ステップS1503)。
設定後、CPU#0は、スケジューリング部303にスケジューリング要求し(ステップS1504)、利用開始処理を終了する。なお、スケジューリング要求を受けたスケジューリング部303は、図13、図14で示した処理を実行する。
対象デバイスが他のアプリによって利用中でない場合(ステップS1502:No)、CPU#0は、DVFS制御部305に対象デバイスの利用開始を通知する(ステップS1505)。なお、ステップS1405の処理にて行われる通知のデータには、排他アクセス数Csも含まれる。なお、ステップS1503の処理時点では、ステップS1502:Noのルートを通った時点で他のアプリによって利用中でないことから排他アクセス数Cs=0となるため、排他アクセス数Cs=1となる。通知後、CPU#0は、要求元のアプリに対象デバイスの利用許可を通知し(ステップS1506)、利用開始処理を終了する。
図16は、実施の形態1における排他制御部304の利用解放処理を示すフローチャートである。CPU#0は、対象デバイスを利用していたアプリから利用解放通知を受け付ける(ステップS1601)受付後、CPU#0は、対象デバイスに対する許可待ち状態となっているアプリが存在するかを判断する(ステップS1602)。許可待ち状態となっているアプリが存在する場合(ステップS1602:Yes)、CPU#0は、最初に許可待ち状態となったアプリを選択する(ステップS1603)。
選択後、CPU#0は、選択されたアプリの割り当てられたCPUが停止中か否かを判断する(ステップS1604)。停止中である場合(ステップS1604:Yes)、CPU#0は、DVFS制御部305に、割り当てられたCPUの動作停止解除を通知する(ステップS1605)。通知後、または、選択されたアプリの割り当てられたCPUが停止中でない場合(ステップS1604:No)、CPU#0は、対象デバイス識別情報と排他アクセス数Csを、排他アクセス数変更情報として生成する(ステップS1606)。なお、ステップS1606の処理にて行われる通知のデータには、排他アクセス数変更情報も含まれる。また、排他アクセス数Csは、ステップS1605の処理にてCPUの動作停止解除を行ったため、停止を行う前より1少ない数となる。
生成後、CPU#0は、DVFS制御部305に、排他アクセス数変更を通知する(ステップS1607)。通知後、CPU#0は、選択されたアプリの許可待ち状態を解除する(ステップS1608)。解除後、CPU#0は、選択されたアプリに対象デバイスの利用許可を通知し(ステップS1609)、利用解放処理を終了する。対象デバイスに対する許可待ち状態となっているアプリがない場合(ステップS1602:No)、CPU#0は、DVFS制御部305に、対象デバイスの利用終了を通知し(ステップS1610)、利用解放処理を終了する。
図17は、実施の形態1におけるDVFS制御部305の処理を示すフローチャート(その1)である。DVFS制御部305の処理は、スケジューリング部303、または排他制御部304からの通知によって開始する。CPU#0は、スケジューリング部303、または排他制御部304からの通知を検出する(ステップS1701)。検出後、CPU#0は、通知種別を判断する(ステップS1702)。
通知種別がCPUクロック周波数標準値設定、または、CPU動作停止解除である場合(ステップS1702:CPUクロック周波数標準値設定/CPU動作停止解除)、CPU#0は、PMU107を、通知されたCPUのクロック周波数を標準値に設定するように制御する(ステップS1703)。なお、ステップS1703の処理が行われる契機としては、ステップS1405の処理からの通知、またはステップS1605の処理からの通知である。また、標準値の設定は、CPU#0がクロック周波数標準値テーブル302を参照することで行われる。指示後、CPU#0は、DVFS制御部305の処理を終了する。
通知種別がCPU動作停止である場合(ステップS1702:CPU動作停止)、CPU#0は、PMU107を、通知されたCPUの動作停止を設定するように制御し(ステップS1704)、DVFS制御部305の処理を終了する。なお、ステップS1704の処理が行われる契機としては、ステップS1306の処理からの通知である。
通知種別がデバイス利用開始、または、排他アクセス数変更である場合(ステップS1702:デバイス利用開始/排他アクセス数変更)、CPU#0は、クロック周波数テーブル301から、通知されたデバイス#Sxのクロック周波数テーブル301#Sxを選択する(ステップS1705)。なお、ステップS1705の処理が行われる契機としては、ステップS1305の処理からの通知と、ステップS1405の処理からの通知である。
選択後、CPU#0は、クロック周波数テーブル301#Sxから、通知された排他アクセス数Csに対応するデバイスのクロック周波数の設定値を抽出する(ステップS1706)。抽出後、CPU#0は、PMU107を、デバイス#Sxのクロック周波数を抽出したデバイスの設定値に設定するように制御し(ステップS1707)、DVFS制御部305の処理を終了する。
通知種別がデバイス利用終了である場合(ステップS1702:デバイス利用終了)、CPU#0は、PMU107を、通知された対象デバイスのクロック周波数を標準値に設定するように制御する(ステップS1708)。なお、ステップS1708の処理が行われる契機としては、ステップS1610の処理からの通知である。また、標準値の設定は、CPU#0がクロック周波数標準値テーブル302を参照することで行われる。指示後、CPU#0は、DVFS制御部305の処理を終了する。通知種別が競合アクセス数変更である場合については、後述する図18にて説明を行う。
図18は、実施の形態1におけるDVFS制御部305の処理を示すフローチャート(その2)である。通知種別が競合アクセス数変更である場合(ステップS1702:競合アクセス数変更)、CPU#0は、クロック周波数テーブル301から、通知されたデバイス#Hxのクロック周波数テーブル301#Hxを選択する(ステップS1801)。なお、ステップS1801の処理が行われる契機としては、ステップS1404の処理からの通知と、ステップS1409の処理からの通知である。
選択後、CPU#0は、クロック周波数テーブル301#Hxから、通知された競合アクセス数Chに対応するCPUのクロック周波数の設定値とデバイスのクロック周波数の設定値を抽出する(ステップS1802)。抽出後、CPU#0は、PMU107を、通知されたCPU群のクロック周波数を抽出したCPUのクロック周波数に設定するように制御する(ステップS1803)。続けて、CPU#0は、PMU107を、デバイス#Hxのクロック周波数を抽出したデバイスの設定値に設定するように制御し(ステップS1804)、DVFS制御部305の処理を終了する。
以上説明したように、マルチコアプロセッサシステム、および電力制御方法によれば、コア群によるデバイスへのアクセス競合が発生する場合、ボトルネックとなるデバイスのクロック周波数を上げつつ競合が解消しない範囲で競合中コアのクロック周波数を下げる。これにより、マルチコアプロセッサシステムは、マルチコアプロセッサシステム全体の処理性能を下げずに省電力化できる。
また、マルチコアプロセッサシステムは、競合発生が不可避である場合でも消費電力量を削減することができるため、消費電力あたりの性能比を向上することができる。また、マルチコアプロセッサシステムは、負荷の低い箇所の処理能力を下げる方向と、負荷の高い箇所の処理能力を上げる方向のうち、より消費電力量が削減する方向かをクロック周波数テーブルを参照することで判断することが可能である。
また、マルチコアプロセッサシステムは、デバイスのクロック周波数を上げる場合、安定動作可能な最低電圧に設定し、コアのクロック周波数を下げる場合、安定動作可能な最低電圧に設定してもよい。消費電力量は、クロック周波数と電圧に比例するため、マルチコアプロセッサシステムの消費電力量を、クロック周波数を変化させた場合よりもさらに削減することができる。なお、マルチコアプロセッサシステムは、DVFS制御によってクロック周波数および電圧の変更が可能であることを想定していたが、電圧が変更できずに周波数のみが変更可能である場合であっても、消費電力量を削減することができる。
また、デバイスのクロック周波数および電圧、CPUのクロック周波数および電圧は、マルチコアプロセッサシステム内の複数のコアの数、デバイスをアクセスするCPU数、CPUの消費電力、デバイスの消費電力に基づいて算出してもよい。これにより、マルチコアプロセッサシステム100は、クロック周波数テーブル301を生成することができる。
また、CPUのクロック周波数および電圧は、デバイスをアクセスするCPUの処理性能を維持するための下限値より大きくてもよい。CPUのクロック周波数が処理性能を維持する下限値である場合、処理性能を維持しつつマルチコアプロセッサシステム100全体の消費電力量を最も多く削減することができる。
また、デバイスのアクセスは、競合アクセスまたは排他アクセスのうち、いずれかのアクセス方法であってもよい。マルチコアプロセッサシステム100は、ハードウェアによる調停を受けるデバイスに対する競合アクセス、ソフトウェアによる調停を受ける排他アクセスのいずれであっても、処理性能を維持しつつ消費電力量を削減することができる。
(実施の形態2の概要説明)
実施の形態1にかかるマルチコアプロセッサシステム100では、1つのアプリが同時に複数のデバイスを利用することがないことを前提としていた。しかしながら、運用時には、1つのアプリが同時に複数のデバイスを利用することもある。したがって、実施の形態2にかかるマルチコアプロセッサシステム100では、1つのアプリが同時に複数のデバイスを利用する場合について説明を行う。なお、実施の形態2にかかるマルチコアプロセッサシステム100のハードウェアは、実施の形態1にかかるマルチコアプロセッサシステム100と等しいため、説明を省略する。以下、実施の形態2にかかるマルチコアプロセッサシステム100の機能について、図19〜図22を用いて説明を行う。
また、実施の形態2にかかるマルチコアプロセッサシステム100の機能についても、図3で示した実施の形態1にかかるマルチコアプロセッサシステム100の機能とほぼ等しい。以下に、記憶部306、検出部307、特定部309、抽出部311、制御部312について説明を行う。
記憶部306は、複数のデバイスの少なくともいずれか1つのデバイスに少なくとも2以上のコアがアクセス競合する状態ごとに、複数のデバイスに対する複数のクロック周波数とコア群のクロック周波数とを記憶する。なお、複数のデバイスに対する複数のクロック周波数は、複数のデバイスの処理速度を非アクセス競合時以上にさせるクロック周波数である。また、コア群のクロック周波数は、処理速度が非アクセス競合時以上となる複数のデバイスに対してアクセス競合を維持しつつコア数に対応するコア群の処理速度を非アクセス競合時以下にさせるクロック周波数である。なお、記憶部306は、具体的には図19にて示すクロック周波数テーブル1901として記憶する。
検出部307は、複数のデバイスにアクセスする複数のコアのうち、アクセス競合を発生させる特定のコア群をデバイスごとに検出する機能を有する。たとえば、検出部307は、デバイス#H0に対してアクセス競合発生させるCPU#1、CPU#2、デバイス#H1に対してアクセス競合発生させるCPU#0〜CPU#2を検出する。または、検出部307は、デバイス群205に対しアクセス競合を発生させる新たなCPUが追加された場合に、新たなCPUを検出してもよい。なお、検出されたCPUは識別情報として、CPU#0のレジスタ、キャッシュメモリ、RAM202といった記憶領域に記憶される。
特定部309は、検出部307によって検出された特定のコア群によって、複数のデバイスに対するアクセス競合の状態を特定する機能を有する。たとえば、特定部309は、デバイス#H0〜デバイス#HMのアクセス競合の状態として、デバイス#H0〜デバイス#HMの各々に対して利用中のCPUの識別情報群となるH0_CPUs〜HM_CPUsを生成する。H0_CPUs〜HM_CPUsに格納されるCPUの識別情報群が特定のコア群となる。
たとえば、検出部307が、デバイス#H0に対してアクセス競合発生させるCPU#1、CPU#2、デバイス#H1に対してアクセス競合発生させるCPU#0〜CPU#2を検出した状態を想定する。このとき、特定部309は、H0_CPUs:CPU#1、CPU#2、H1_CPUs:CPU#0〜CPU#2を生成する。また、特定部309は、H2_CPUs〜HM_CPUsには、値が入っていないことを示すNULLを格納する。さらに、検出部307は、H0_CPUs〜HM_CPUsから、競合アクセス数Ch#0〜Ch#Mを生成し、複数のデバイスに対するアクセス競合の状態として特定する。
また、特定部309は、検出部307によってデバイス群205に対しアクセス競合を発生させる新たなCPUを検出した場合、現在のアクセス競合の状態に、新たなCPUに対応するアクセス競合の状態を反映してもよい。なお、特定されたH0_CPUs〜HM_CPUsは、RAM202といった記憶領域に記憶される。
抽出部311は、特定部309によって特定された複数のデバイスに対するアクセス競合の状態に応じた複数のデバイスに対応する複数のクロック周波数と特定のコア群のクロック周波数とを抽出する。なお、抽出部311は、記憶部306によって記憶された複数のデバイスに対応する複数のクロック周波数とコア群のクロック周波数とから、複数のデバイスに対応する複数のクロック周波数と特定のコア群のクロック周波数とを抽出する。
たとえば、特定部309が、デバイス群205に対するアクセス競合の状態として、競合アクセス数Ch#0=2、Ch#1=3、としてアクセス競合の状態を特定した場合を想定する。このとき、抽出部311は、クロック周波数テーブル1901のレコード群のうち、競合アクセス数Ch#0=2、Ch#1=3となるレコードを抽出する。これにより。抽出部311は、抽出されたレコード内に含まれるデバイス群205のクロック周波数と、特定のCPU群のクロック周波数を抽出したことになる。
たとえば、抽出したレコード内には、複数のデバイスに対する複数のクロック周波数として、デバイス#H0:600[MHz]、デバイス#H1:800[MHz]、…、デバイス#HM:800[MHz]という値が格納されている。さらに、抽出したレコード内には、特定のCPU群のクロック周波数の値として、たとえば200[MHz]が格納されている。
制御部312は、抽出部311によって抽出された複数のデバイスに対応する複数のクロック周波数にて複数のデバイスを動作させ、さらに、抽出された特定のコア群のクロック周波数にて特定のコア群を動作させる機能を有する。たとえば、制御部312は、PMU107を、デバイス#H0を600[MHz]、デバイス#H1を800[MHz]、デバイス#HMを800[MHz]で動作させるように制御する。さらに、制御部312は、PMU107を、特定のCPU群となるCPU#0〜CPU#2のクロック周波数を200[MHz]で動作させるように制御する。
このように、実施の形態2におけるマルチコアプロセッサシステム100は、複数のデバイスにアクセスする複数のコアのうち、アクセス競合を発生させる特定のコア群をデバイスごとに検出する検出する。また、マルチコアプロセッサシステム100は、複数のデバイスの少なくともいずれか1つのデバイスに少なくとも2以上のコアがアクセス競合する状態ごとに、複数のデバイスに対する複数のクロック周波数と、コア群のクロック周波数と、を記憶する。なお、複数のデバイスに対する複数のクロック周波数は、複数のデバイスの処理速度を非アクセス競合時以上にさせるクロック周波数である。コア群のクロック周波数は、処理速度が非アクセス競合時以上となる複数のデバイスに対してアクセス競合を維持しつつコア数に対応するコア群の処理速度を非アクセス競合時以下にさせる周波数である。
続けて、マルチコアプロセッサシステム100は、検出された特定のコア群によって、複数のデバイスに対するアクセス競合の状態を特定する。特定後、マルチコアプロセッサシステム100は、特定された複数のデバイスに対するアクセス競合の状態に応じた複数のデバイスに対応する複数のクロック周波数と特定のコア群のクロック周波数とを抽出する。なお、抽出対象は、記憶された複数のデバイスに対応する複数のクロック周波数とコア群のクロック周波数となる。抽出後、マルチコアプロセッサシステム100は、抽出された複数のデバイスに対応する複数のクロック周波数にて複数のデバイスを動作させ、抽出された特定のコア群のクロック周波数にて特定のコア群を動作させる。
図19は、実施の形態2におけるクロック周波数テーブル1901の記憶内容の一例を示す説明図である。実施の形態2におけるクロック周波数テーブル1901は、競合アクセス数、CPUクロック周波数、デバイスクロック周波数という3つのフィールドを含む。
競合アクセス数フィールドには、デバイス群205の競合アクセス数が格納される。また、競合アクセス数フィールドはデバイス#H0〜デバイス#HMごとに存在し、各デバイスの競合アクセス数が格納されている。なお、競合アクセス数フィールドには、0or1、2、…、Nまでのうち、いずれかの値が格納される。クロック周波数テーブル1901には、複数のデバイスが同時利用される組合せが格納されるため、レコード数は、N^(M+1)−1数個となる。これにより、クロック周波数テーブル1901には、デバイス群205の少なくともいずれか1つのデバイスに少なくとも2以上のCPUがアクセス競合する全ての状態を網羅することができる。
CPUクロック周波数フィールドには、競合アクセス数フィールドに格納された各デバイスの競合アクセス数が一致した場合に、最も消費電力量が低くなるCPUのクロック周波数が格納される。デバイスクロック周波数フィールドには、競合アクセス数フィールドに格納された各デバイスの競合アクセス数が一致した場合に、最も消費電力量が低くなるデバイスのクロック周波数が格納される。また、デバイスクロック数フィールドはデバイス#H0〜デバイス#HM各々に存在し、各デバイスのクロック周波数が格納されている。
また、クロック周波数テーブル1901には、CPUクロック周波数フィールドの値でCPUが動作する場合に、CPUが安定動作可能な最低電圧の値を格納するフィールドがあってもよい。さらに、クロック周波数テーブル1901のデバイス#H0〜デバイス#HMにそれぞれに存在するデバイスクロック数フィールドの値で各デバイスが動作する場合に、デバイスが安定動作可能な最低電圧の値を格納するフィールドがあってもよい。
なお、クロック周波数テーブル1901の生成方法は、実施の形態1におけるクロック周波数テーブル301の生成方法と同様である。具体的には、全てのデバイス競合の組み合わせに対して、処理性能を維持するCPUの最小のクロック周波数を測定し、(2)式〜(4)式から、マルチコアプロセッサシステム100全体の消費電力量が最小となるデバイス群205のクロック周波数を決定する。
図20は、CPUs105およびデバイス群205のクロック周波数の設定例を示す説明図である。図20では、クロック周波数テーブル1901のレコード群から、適用するレコードを抽出する動作について説明する。符号2001に示すマルチコアプロセッサシステム100は、CPU#0が、デバイス#H1に頻繁にアクセスするアプリを実行し、CPU#1、CPU#2が、デバイス#H0とデバイス#H1に頻繁にアクセスするアプリを実行する。なお、CPU#3〜CPU#Nといった他のCPUは、デバイス群205に頻繁にアクセスするアプリを実行していないと想定する。
マルチコアプロセッサシステム100は、デバイス#H0〜デバイス#HMの各々に対して利用中のCPUの識別情報群となるH0_CPUs〜HM_CPUsを生成する。H0_CPUs〜HM_CPUsには、各デバイスを利用中のCPUの識別情報が格納される。図20の例では、H0_CPUs:CPU#1、CPU#2となり、H1_CPUs:CPU#0〜CPU#2となり、H2_CPUs〜HM_CPUsはNULLとなる。
マルチコアプロセッサシステム100は、H0_CPUs〜HM_CPUsより、デバイスごとの競合アクセス数Ch#0〜Ch#Mを算出する。具体的に、競合アクセス数Chは、H0_CPUs〜HM_CPUs各々の要素数となる。図20の例では、Ch#0=2、Ch#1=3、Ch#2〜Ch#Mは全て0となる。したがって、マルチコアプロセッサシステム100は、クロック周波数テーブル1901のレコード群から、レコード2002を抽出する。なお、対象デバイスの競合アクセス数が1である場合、競合が発生していないため、対象デバイスの競合アクセス数が0であるレコードを抽出する。
マルチコアプロセッサシステム100は、抽出されたレコードに応じて、CPU#0〜CPU#2のクロック周波数を1000[MHz]から200[MHz]に変更する。同様に、マルチコアプロセッサシステム100は、デバイス#H0のクロック周波数を400[MHz]から600[MHz]に変更し、デバイス#H1のクロック周波数を400[MHz]から800[MHz]に変更する。
なお、図20では、1つのアプリが複数のデバイス群205を利用する場合について説明した。1つのアプリが複数のデバイス群206を利用する場合については、1度の排他処理で、複数のデバイスの利用権を取得、解放することができる。
たとえば、利用権を取得する場合、CPU#0は、ステップS1405の処理にて、DVFS制御部305に対象デバイスの利用開始を、対象デバイス数回通知すればよい。なお、排他アクセス数Csは、デバイス群206分保持しておき、CPU#0は、対象デバイスに対応する排他アクセス数CsをDVFS制御部305に通知する。DVFS制御部305では、対象デバイスのクロック周波数テーブル301から、排他アクセス数Csに応じて対象デバイスのクロック周波数を抽出する。また、利用権を解放する場合も、CPU#0は、ステップS1610の処理にて、DVFS制御部305に対象デバイスの利用終了を対象デバイス数回通知すればよい。
また、排他アクセス数が変更する場合に関しても、CPU#0は、ステップS1305の処理、ステップS1607の処理にて、DVFS制御部305に排他アクセス数変更通知を対象デバイス数回通知すればよい。
以下、マルチコアプロセッサシステム100は、クロック周波数テーブル1901を利用して、図21に示すスケジューリング部303の処理、図22に示すDVFS制御部305の処理を実行する。また、実施の形態2にかかるスケジューリング部303の処理、DVFS制御部305の処理は、CPUs105に含まれる全てのCPUによって実行されてもよいが、図21、図22ではCPU#0が実行することを想定して説明を行う。
図21は、実施の形態2におけるスケジューリング部303の処理を示すフローチャート(その2)である。なお、実施の形態2におけるスケジューリング部303の処理を示すフローチャート(その1)に関しては、実施の形態1におけるスケジューリング部303の処理を示すフローチャート(その1)とステップS1305の処理以外等しいため、説明を省略する。また、実施の形態2におけるスケジューリング部303のステップS1305に対応する処理は、前述した、DVFS制御部305に排他アクセス数変更通知を対象デバイス数回通知する処理となる。
CPU#0は、変更前のアプリがデバイスに頻繁にアクセスするアプリか否かを判断する(ステップS2101)。変更前のアプリがデバイスに頻繁にアクセスするアプリである場合(ステップS2101:Yes)、CPU#0は、DVFS制御部305に、自CPUのクロック周波数を標準値に設定するように通知する(ステップS2102)。通知後、または変更前のアプリがデバイスに頻繁にアクセスするアプリでない場合(ステップS2101:No)、CPU#0は、変更前のアプリ、または、変更後のアプリがデバイスに頻繁にアクセスするアプリかを判断する(ステップS2103)。
変更前のアプリ、または、変更後のアプリがデバイスに頻繁にアクセスするアプリである場合(ステップS2103:Yes)、CPU#0は、変更後のアプリが頻繁にアクセスするデバイス群を、変更後のデバイス群として取得する(ステップS2104)。なお、変更後のアプリがデバイスに頻繁にアクセスするアプリでない場合は、変更後のデバイス群は空集合となる。
変更後のデバイス群を取得後、CPU#0は、自CPUの識別情報と、変更後のデバイス群と、を競合アクセス数変更情報として生成する(ステップS2105)。生成後、CPU#0は、DVFS制御部305に、競合アクセス数変更を通知し(ステップS2106)、スケジューリング部303の処理を終了する。変更前のアプリ、変更後のアプリが共にデバイスに頻繁にアクセスするアプリでない場合(ステップS2103:No)、CPU#0は、スケジューリング部303の処理を終了する。
図22は、実施の形態2におけるDVFS制御部305の処理を示すフローチャート(その2)である。なお、実施の形態2におけるDVFS制御部305の処理を示すフローチャート(その1)に関しては、実施の形態1におけるDVFS制御部305の処理を示すフローチャート(その1)と等しいため、説明を省略する。
通知種別が競合アクセス数変更である場合、CPU#0は、H0_CPUs〜HM_CPUsを記憶しているか否かを判断する(ステップS2201)。H0_CPUs〜HM_CPUsを記憶していない場合(ステップS2201:No)、CPU#0は、H0_CPUs〜HM_CPUsを、全ての値をNULLとして記憶する(ステップS2202)。なお、記憶する箇所としては、RAM202といった記憶領域である。
記憶終了後、または、H0_CPUs〜HM_CPUsを記憶している場合(ステップS2201:Yes)、CPU#0は、H0_CPUs〜HM_CPUsから、通知されたCPUの識別情報を消去する(ステップS2203)。たとえば、H0_CPUs:CPU#0、CPU#3、H1_CPUs:CPU#0〜CPU#2、H2_CPUs〜HM_CPUs:NULLとなっており、CPU#0が通知された場合を想定する。このとき、CPU#0は、H0_CPUs:CPU#3、H1_CPUs:CPU#1、CPU#2、H2_CPUs〜HM_CPUs:NULLと設定する。
消去後、CPU#0は、H0_CPUs〜HM_CPUsのうち、通知された変更後のデバイス群の対応する箇所について、通知されたCPUの識別情報を追加する(ステップS2204)。たとえば、H0_CPUs:CPU#3、H1_CPUs:CPU#1、CPU#2、H2_CPUs〜HM_CPUs:NULLとなっており、変更後のデバイス群がデバイス#H1、デバイス#H2、である場合を想定する。このとき、通知されたCPUがCPU#0であれば、CPU#0は、H0_CPUs:CPU#3、H1_CPUs:CPU#0〜CPU#2、H2_CPUs:CPU#0、H3_CPUs〜HM_CPUs:NULLと設定する。
追加後、CPU#0は、H0_CPUs〜HM_CPUsから、競合アクセス数Ch#0〜Ch#Mを生成する(ステップS2205)。たとえば、H0_CPUs:CPU#3、H1_CPUs:CPU#0〜CPU#2、H2_CPUs:CPU#0、H3_CPUs〜HM_CPUs:NULLとなっている場合を想定する。このとき、CPU#0は、Ch#0=1、Ch#1=3、Ch#2=1、Ch#3〜Ch#M=0というように競合アクセス数を生成する。
インクリメント後、CPU#0は、クロック周波数テーブル1901のレコード群のうち、競合アクセス数フィールドの値と、生成された競合アクセス数Ch#0〜Ch#Mの値と、が全て一致するレコードを抽出する(ステップS2206)。抽出後、CPU#0は、PMU107を、競合アクセス数Ch#0〜Ch#Mが2以上となるデバイス群に頻繁にアクセスするCPUのクロック周波数を、抽出したレコードのCPUクロック周波数の値に設定するように制御する(ステップS2207)。
たとえば、競合アクセス数がCh#0=1、Ch#1=3、Ch#2=1、Ch#3〜Ch#M=0となっている場合、Chが2以上となるデバイス群は、デバイス#H1となる。デバイス#H1に頻繁にアクセスするCPUがH1_CPUsを参照してCPU#0〜CPU#2となる場合、CPU#0は、PMU107を、CPU#0〜CPU#2のクロック周波数を抽出したレコードのCPUクロック周波数の値に設定するように制御する。
続けて、CPU#0は、競合アクセス数Chが1のデバイスにアクセスするCPUが、H0_CPUs〜HM_CPUsのうち、競合アクセス数が2以上となるデバイスに全て存在するかを判断する(ステップS2208)。存在しないCPUがある場合(ステップS2208:No)、CPU#0は、PMU107を、競合アクセス数Chが1のデバイスのみにアクセスするCPUのクロック周波数を標準値に設定するように制御する(ステップS2209)。
たとえば、H0_CPUs:CPU#3、H1_CPUs:CPU#0〜CPU#2、H2_CPUs:CPU#0、H3_CPUs〜HM_CPUs:NULLであり、Ch#0=1、Ch#1=3、Ch#2=1、Ch#3〜Ch#M=0である場合を想定する。初めに、CPU#0は、競合アクセス数Chが1であるデバイス#H0にアクセスするCPU#3と、デバイス#H2にアクセスするCPU#0とを抽出する。
続けて、CPU#0は、CPU#3とCPU#0が、競合アクセス数が2以上となるデバイス#H1にアクセスするH1_CPUs内に存在するかを判断する。CPU#0は存在するが、CPU#3は存在しない。これにより、CPU#3は、競合アクセス数Chが1のデバイスのみにアクセスしていることになる。この結果により、CPU#0は、CPU#3のクロック周波数を標準値に設定するように制御する。
全て存在した場合(ステップS2208:Yes)、または、ステップS2209の処理後、CPU#0は、PMU107を、デバイス群205のクロック周波数を、抽出したレコードのデバイスクロック周波数フィールドの値に設定するように制御する(ステップS2210)。制御後、CPU#0は、DVFS制御部305の処理を終了する。
以上説明したように、マルチコアプロセッサシステム、および電力制御方法によれば、コアが複数のデバイスに同時にアクセスする場合、複数のデバイスの競合状態を特定し、複数のデバイスと競合中のコア群を特定された状態に応じたクロック周波数で動作させる。これにより、マルチコアプロセッサシステムは、複数のデバイスの競合が組み合わさった状態であっても、処理性能を落とさずに最も消費電力量が削減された状態で運用することができる。
なお、本実施の形態で説明した電力制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本電力制御方法を実行するプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本電力制御方法を実行するプログラムは、インターネット等のネットワークを介して配布してもよい。
#0、#1、#N CPU
#H0、#S0 デバイス
100 マルチコアプロセッサシステム
105 CPUs
106 メモリ
107 PMU
108 バス
205 デバイス群
206 デバイス群
301 クロック周波数テーブル
302 クロック周波数標準値テーブル
303 スケジューリング部
304 排他制御部
305 DVFS制御部
306 記憶部
307、308 検出部
309、310 特定部
311 抽出部
312 制御部

Claims (10)

  1. 複数のCPUと、
    デバイスと、
    前記デバイスをアクセスするCPUの数に対して消費電力が最小となるクロック周波数および電圧が格納されるメモリと、
    前記デバイスをアクセスするCPUの数が変化するとき、前記CPUの数に対応する前記クロック周波数および前記電圧を前記メモリから読み出して、前記デバイスをアクセスするCPUに前記クロック周波数および前記電圧を設定する電力制御ユニットと
    を含むことを特徴とするマルチコアプロセッサシステム。
  2. 前記メモリは、
    前記デバイスをアクセスするCPUの数に対して消費電力が最小となる前記デバイスのクロック周波数および電圧と前記デバイスをアクセスするCPUのクロック周波数および電圧とが格納され、
    前記電力制御ユニットは、
    前記デバイスをアクセスするCPUの数が変化するとき、前記CPUの数に対応する前記デバイスのクロック周波数および電圧と前記デバイスをアクセスするCPUのクロック周波数および電圧とを前記メモリから読み出して、前記デバイスに前記デバイスのクロック周波数および電圧を設定し、前記デバイスをアクセスするCPUに前記デバイスをアクセスするCPUのクロック周波数および電圧を設定すること
    を特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 前記クロック周波数および前記電圧は、前記複数のCPUの数、前記デバイスをアクセスするCPUの数、前記複数のCPUのうちの少なくとも一のCPUの消費電力、および前記デバイスの消費電力に基づいて算出されること
    を特徴とする請求項1に記載のマルチコアプロセッサシステム。
  4. 前記クロック周波数および前記電圧は、前記デバイスをアクセスするCPUの処理性能を維持するための下限値より大きいこと
    を特徴とする請求項1に記載のマルチコアプロセッサシステム。
  5. 前記デバイスへのアクセスは、競合アクセスおよび排他アクセスを含むこと
    を特徴とする請求項1乃至請求項4の何れか一に記載のマルチコアプロセッサシステム。
  6. コンピュータが、
    複数のCPUがデバイスにアクセスするときの消費電力が最小となるときのクロック周波数および電圧をメモリから読み出し、
    前記デバイスにアクセスするCPUに前記クロック周波数および前記電圧を設定すること
    を特徴とするマルチコアプロセッサシステムの電力制御方法。
  7. 前記メモリから前記クロック周波数および前記電圧を読み出す処理は、
    前記デバイスをアクセスするCPUの数に対して消費電力が最小となる前記デバイスのクロック周波数および電圧と前記デバイスをアクセスするCPUのクロック周波数および電圧を読み出し、
    前記クロック周波数および前記電圧を設定する処理は、
    前記デバイスに前記デバイスのクロック周波数および電圧を設定し、前記デバイスをアクセスするCPUに前記デバイスをアクセスするCPUのクロック周波数および電圧を設定すること
    を特徴とする請求項6に記載のマルチコアプロセッサシステムの電力制御方法。
  8. 前記メモリは、前記デバイスをアクセスするCPUの数に対して消費電力が最小となるクロック周波数および電圧を格納すること
    を特徴とする請求項6に記載の電力制御方法。
  9. 前記複数のCPUは前記デバイスに競合してアクセスすること
    を特徴とする請求項6乃至請求項8の何れか一に記載の電力制御方法。
  10. 前記複数のCPUは前記デバイスに排他的にアクセスすること
    を特徴とする請求項6乃至請求項8の何れか一に記載の電力制御方法。
JP2012549537A 2010-12-22 2010-12-22 マルチコアプロセッサシステム、および電力制御方法 Expired - Fee Related JP5545376B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/073221 WO2012086040A1 (ja) 2010-12-22 2010-12-22 マルチコアプロセッサシステム、および電力制御方法

Publications (2)

Publication Number Publication Date
JPWO2012086040A1 JPWO2012086040A1 (ja) 2014-05-22
JP5545376B2 true JP5545376B2 (ja) 2014-07-09

Family

ID=46313344

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012549537A Expired - Fee Related JP5545376B2 (ja) 2010-12-22 2010-12-22 マルチコアプロセッサシステム、および電力制御方法

Country Status (4)

Country Link
US (1) US9483101B2 (ja)
EP (1) EP2657840A4 (ja)
JP (1) JP5545376B2 (ja)
WO (1) WO2012086040A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101991682B1 (ko) * 2012-08-29 2019-06-21 삼성전자 주식회사 Dvfs 제어 방법 및 이를 이용한 시스템-온 칩
JP5982588B2 (ja) * 2013-02-05 2016-08-31 クアルコム,インコーポレイテッド 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
JP6051924B2 (ja) * 2013-02-21 2016-12-27 富士通株式会社 情報処理装置の制御方法、制御プログラム、情報処理装置
US9405340B2 (en) * 2013-06-27 2016-08-02 Intel Corporation Apparatus and method to implement power management of a processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0997122A (ja) * 1995-09-28 1997-04-08 Toshiba Corp マルチプロセッサシステム
JP2007114856A (ja) * 2005-10-18 2007-05-10 Handotai Rikougaku Kenkyu Center:Kk 半導体装置とその制御方法
JP2008287592A (ja) * 2007-05-18 2008-11-27 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサ制御装置とその制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3422504B2 (ja) 1992-11-24 2003-06-30 日本電信電話株式会社 タスク間排他制御方法
US6460125B2 (en) * 1998-08-07 2002-10-01 Ati Technologies, Inc. Dynamic memory clock control system and method
JP4190629B2 (ja) 1998-11-10 2008-12-03 パナソニック株式会社 マルチプロセッサシステム
US6988211B2 (en) * 2000-12-29 2006-01-17 Intel Corporation System and method for selecting a frequency and voltage combination from a table using a selection field and a read-only limit field
JP2003256069A (ja) 2002-03-05 2003-09-10 Ricoh Co Ltd 制御装置及び複合機
EP1462915A3 (en) 2003-03-26 2009-01-21 Panasonic Corporation Clock controlling method and apparatus
JP4422523B2 (ja) * 2003-03-26 2010-02-24 パナソニック株式会社 情報処理装置、電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及びその記録媒体
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US20100162256A1 (en) * 2008-12-18 2010-06-24 Alexander Branover Optimization of application power consumption and performance in an integrated system on a chip

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0997122A (ja) * 1995-09-28 1997-04-08 Toshiba Corp マルチプロセッサシステム
JP2007114856A (ja) * 2005-10-18 2007-05-10 Handotai Rikougaku Kenkyu Center:Kk 半導体装置とその制御方法
JP2008287592A (ja) * 2007-05-18 2008-11-27 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサ制御装置とその制御方法

Also Published As

Publication number Publication date
EP2657840A4 (en) 2016-09-28
EP2657840A1 (en) 2013-10-30
US20130275790A1 (en) 2013-10-17
US9483101B2 (en) 2016-11-01
JPWO2012086040A1 (ja) 2014-05-22
WO2012086040A1 (ja) 2012-06-28

Similar Documents

Publication Publication Date Title
JP6249953B2 (ja) ヘテロジニアスマルチプロセッサシステムオンチップにおける熱駆動作業負荷スケジューリング
US8381215B2 (en) Method and system for power-management aware dispatcher
JP5648544B2 (ja) スケジューリングプログラム、および情報処理装置
US8935698B2 (en) Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
KR101529016B1 (ko) 멀티-코어 시스템 에너지 소비 최적화
US8726055B2 (en) Multi-core power management
JP5633440B2 (ja) 情報処理装置、電力制御方法及び電力制御プログラム
US9715407B2 (en) Computer product, multicore processor system, and scheduling method
WO2012120654A1 (ja) タスクスケジューリング方法およびマルチコアシステム
KR20130137613A (ko) 프로세싱 노드의 동적 성능 제어
US8683160B2 (en) Method and apparatus for supporting memory usage accounting
JP5545376B2 (ja) マルチコアプロセッサシステム、および電力制御方法
US11150933B2 (en) Optimizing host CPU usage based on virtual machine guest OS power and performance management
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
US11734067B2 (en) Multi-core system and controlling operation of the same
WO2011155047A1 (ja) マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
Gifford et al. Dna: Dynamic resource allocation for soft real-time multicore systems
CN109791469B (zh) 设置高速缓冲存储器的时钟速度/电压的装置及方法
US8645640B2 (en) Method and apparatus for supporting memory usage throttling
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
US20230384855A1 (en) Reducing system power consumption when capturing data from a usb device
CN112346557B (zh) 多核系统及其控制操作
TW201020928A (en) Virtualization across physical partitions of a multi-core processor (MCP)
JP5862727B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP2019212274A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140415

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140428

R150 Certificate of patent or registration of utility model

Ref document number: 5545376

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees