JP6483609B2 - マルチcpuシステム - Google Patents

マルチcpuシステム Download PDF

Info

Publication number
JP6483609B2
JP6483609B2 JP2015517999A JP2015517999A JP6483609B2 JP 6483609 B2 JP6483609 B2 JP 6483609B2 JP 2015517999 A JP2015517999 A JP 2015517999A JP 2015517999 A JP2015517999 A JP 2015517999A JP 6483609 B2 JP6483609 B2 JP 6483609B2
Authority
JP
Japan
Prior art keywords
cpu
data processing
cpus
performance
power consumption
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.)
Active
Application number
JP2015517999A
Other languages
English (en)
Other versions
JPWO2014188561A1 (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of JPWO2014188561A1 publication Critical patent/JPWO2014188561A1/ja
Application granted granted Critical
Publication of JP6483609B2 publication Critical patent/JP6483609B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Description

本発明は非対称マルチCPUシステム、更にはそれにおけるスケーリング方法に関し、例えば携帯情報端末装置への適用により、バッテリー駆動時間を伸張することに有効な技術に関する。
高いデータ処理性能を保証しながらバッテリー駆動時間を延ばすための技術として、特許文献1に記載の技術がある。これは、データ処理を実行する第1のCPUの他に、この第1のCPUよりピーク性能が低く、電力効率が高い第2のCPUと設け、第2のCPUで負荷を監視し、負荷が大きい場合第1のCPUにより処理を実行させ、前記負荷が小さい場合は第1のCPUに代わり第2のCPUに前記処理を実行させるものである。これによって、負荷の状態や温度変化に応じて、システム動作時のリーク電力を低減する。
また、特許文献2には、マルチプロセッサシステムにおいて、タスクを各プロセッサで実行する際に必要となる消費電力情報を管理する管理部を設け、タスクを実行させるプロセッサの選択時に前記消費電力情報を使用し、単位消費電力量当たりの実行処理量が最大となるプロセッサを選択し、そのプロセッサにタスクを割当てる、という技術が記載される。これによって、モバイル端末等の使用可能な電力量が限られているような環境において、限られた電力量でより多くの処理量を実行することができるマルチプロセッサシステムを実現可能になる。
特開2004−280378号公報 特開2011−209846号公報
本発明者は、複数のCPUに非対称に処理が割当てられる非対称マルチCPUシステムにおけるCPU処理のスケーリングについて検討した。すなわち、タスクを実行するCPUの割当てを、データ処理性能の高いCPUと低消費電力のCPUとの間で可変とすることである。その手法として、データ処理性能の高いCPUのグループと低消費電力のCPUのグループとの間で、システム負荷に応じて、使用するCPUのグループを排他的に切替えることが提案されている。また、データ処理性能の高いCPUのグループに含まれるCPUと低消費電力のCPUのグループに含まれるCPUとを一対一に対応させ、対応するCPU同士で、DVFS処理などを用いることによって、システム負荷に応じて使用するCPUを排他的に切替えることが提案されている。しかしながら、それらの提案は、タスク処理に使用可能なCPUの最大数が双方のCPUグループに属する全てのCPUの半数に制限されてしまうことになるため、CPUリソースの稼動効率が悪いという問題がある。更に、高いデータ処理性能のCPUと低いデータ処理性能のCPUを排他的に切替えることから、実現できる性能が、データ処理性能の高いグループから選択された複数のCPUとデータ処理性能の低いグループの中から選択された複数のCPUの総和になり、中間的なデータ処理性能を実現できないことがある。言い換えると、ある瞬間に非対称マルチCPUシステムが必要とする処理性能を適切に満たすように制御することができず、必要な処理性能を過剰に満たすようなCPUの組合せを選択してしまう虞がある。これにより、無駄な電力を消費してしまうことが懸念される。しかしながら、双方のグループに対して、データ処理性能の高いCPUには負荷の大きなタスクだけを割当て、低消費電力のCPUには負荷の小さなタスクだけを割当てるようにして、全部のCPUを最大限利用可能にするには、OSのカーネル、特にタスクスケジューラ若しくはタスクディスパッチャーをそのようなCPUシステムに最適化することが必要である。しかしながら、そのような最適化を実現することは容易ではない。特許文献1,2の技術もそれに対する解決策を示唆するものではない。
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
すなわち、データ処理性能と電力消費量の異なる複数種類のCPUを夫々複数個搭載した非対称マルチCPUシステムにおいて、全体的なデータ処理性能と電力消費量の最大値にバリエーションを持たせるように(全体的なデータ処理性能と電力消費量の最大値が段階的に相違するように)、前記CPUの種類と個数の組合せの形態を複数定義しておき、データ処理の環境に応じて定義情報から選択した形態に従って、データ処理に割当てるCPUの種類と個数を制御する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、データ処理負荷などのデータ処理環境に応じて無駄な電力消費を抑え、且つ必要なデータ処理性能を満たすCPUの組合せを容易に選択することができる。
図1はプロセッサのハードウェア及びソフトウェアの構成を階層的に例示する説明図である。 図2は非対称マルチCPUシステムのシステム構成例を示すシステム構成図である。 図3はCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dとの組合せの形態を例示する説明図である。 図4Aは使用するCPUのグループをシステム負荷などに応じて排他的に切替える手法を比較例として示す説明図である。 図4Bはデータ処理性能の高いCPUのグループに含まれる複数のCPUと低消費電力のCPUのグループに含まれる複数のCPUとを一対一対応させ、対応されるCPUの間で、システム負荷に応じて使用するCPUを排他的に切替える手法を比較例として示す説明図である。 図5Aは図4Aの場合におけるCPUの種類と個数に関する組合せ形態を例示する説明図である。 図5Bは図4Bの場合におけるCPUの種類と個数に関する組合せ形態を例示する説明図である。 図6は仮想プロセッサの割当て処理の制御フローを例示するフローチャートである。 図7はガバナが、熱の発生状況、電池残容量、処理負荷の情報をどのように入手するかの一例を示す説明図である。 図8はガバナがどのようにして仮想プロセッサの切換えが必要かを判別し、その結果に従って適切な仮想プロセッサをどのように選択するのか、という処理例を示す説明図である。 図9は仮想プロセッサの段階的な更新と共にスキップ更新も採用可能にした場合の仮想プロセッサの割当て制御を例示するフローチャートである。 図10はCPUの電源制御も考慮したときのプロセッサのハードウェア及びソフトウェアの構成を階層的に例示する説明図である。 図11は図10の構成を採用した場合における初期化部分の処理フローを例示するフローチャートである。 図12はステップ18−4、18−5で不要なCPUを減らす時の判断に使用する規準を規定するテーブルの一例を示す説明図である。 図13はシステム稼働中にも図10のガバナからCPUホットプラグを制御することで、省電力効果を更に強化する場合の処理フローを例示するフローチャートである。 図14は図10の例に対してDVFS制御を更に組合せることで、消費電力を必要最低限に抑えて連続的な性能向上を図る制御を可能にするプロセッサのハードウェア及びソフトウェアの構成を階層的に例示する説明図である。 図15は図6にDVFS処理を追加した制御フローを例示するフローチャートである。 図16はステップ25のDVFS処理の内容を例示する説明図である。 図17は選択されている仮想プロセッサの処理性能の範囲から隣の処理性能の範囲に入らない範囲でCPUの同期クロック周波数をスケーリングするようにした変形例を示す説明図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について、その概要を説明する。代表的な実施の形態における概要説明において、括弧を付して参照する図面中の参照符号は、それが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<データ処理性能と電力消費量が多段階に相違するCPUの種類と個数の組合せ形態>
データ処理性能と電力消費量の異なる複数種類のCPU(8a〜8d,9a〜9d)を種類毎に複数個搭載した非対称マルチCPUシステムは、全体的なデータ処理性能と電力消費量の最大値にバリエーションを持たせる(全体的なデータ処理性能と電力消費量の最大値が段階的に相違する)ようにCPUの種類と個数の組合せの複数の形態を定義する定義情報(10,13)を有し、データ処理の環境に応じて前記定義情報から選択した形態で特定されるCPUにデータ処理を割当てる(21)。
これによれば、データ処理に対するCPUの割当てを定義情報に基づいて、データ処理性能の高いCPUには負荷の大きなタスクだけを割当て、低消費電力のCPUには負荷の小さなタスクだけを割当てるように制御することができる。よって、OSのタスクスケジューラ若しくはタスクディスパッチャーに全て依存しなくてもよく、そのような処理のためにOSのタスクスケジューラ若しくはタスクディスパッチャーを最適化することを要しない。また、最大で全てのCPUを利用可能であるから、CPUリソースの稼動効率もよく、更に、CPUに対するデータ処理の割当てで実現できる性能が、高いデータ処理性能か、低いデータ処理性能かに限定されず、中間的なデータ処理性能も実現できるから、無駄な電力を消費する虞はほとんど想定されない。したがって、データ処理環境の負荷に応じて無駄な電力消費を抑え且つ必要なデータ処理性能を容易に実現することができる。
〔2〕<データ処理性能と電力消費量が段階に増加する方向に組合せた形態>
項1において、前記定義情報が保有するCPUの種類と個数の組合せの複数の形態は、データ処理性能と電力消費量を段階に増加させる方向にCPUの種類と個数を組合せた形態である(10,13)。
これによれば、必要な処理性能を満足する最小性能の形態を一意的に選択可能である。
〔3〕<要求される処理性能を段階的に満たす方向に組合せた形態で>
項1において、前記定義情報が保有するCPUの種類と個数の組合せの複数の形態は、データ処理の環境に応じて要求される処理性能を段階的に満たす方向にCPUの種類と個数を組合せた形態であり(10,13)、要求される処理性能を満たす最小性能の形態を選択する。
これによれば、必要な処理性能を満足する最小性能の形態を一意的に選択可能である。
〔4〕<データ処理の負荷、発熱状況、電池残量、ユーザー設定>
項2又は3において前記データ処理の環境は、データ処理の負荷(1b)の大小で把握される第1環境、データ処理の負荷(1b)の大小及び発熱状況(1c)で把握される第2環境、データ処理の負荷(1b)の大小、発熱状況(1c)及び電池残量(1d)で把握される第3環境、又はユーザー設定(1e、1f)、データ処理の負荷(1b)の大小、発熱状況(1c)及び電池残量(1d)で把握される第4環境である。
これによれば、第1環境により、データ処理能力に対する余裕度と言う点でデータ処理の環境を把握することができる。第2環境により、発熱状況を考慮したデータ処理能力の余裕度と言う点でデータ処理の環境を把握することができる。第3環境により、発熱状況と電源供給限界を考慮したデータ処理能力の余裕度と言う点でデータ処理の環境を把握することができる。第4環境により、発熱状況と電源供給限界を考慮したデータ処理能力の余裕度と言う点でデータ処理の環境を把握することができると共に、ユーザー設定をデータ処理環境に反映させることができる。
〔5〕<データ処理性能と電力消費量によるCPUの発熱状況>
項4において、前記発熱状況は、データ処理性能と電力消費量の相対的に大きなCPUのグループに含まれるCPUの発熱状況である。
これによれば、データ処理能力に影響を及ぼす発熱状態の把握が可能になる。もちろん、データ処理性能と電力消費量の小さなCPUの発熱状況を監視することでも構わない。
〔6〕<データ処理性能と電力消費量の大きな種類と小さな種類>
項1において、前記CPUの種類は、CPUのデータ処理性能と電力消費量の大小の別に応じて分類されたCPUの複数のグループである。例えば、前記CPUの種類は、データ処理性能と電力消費量の大きなCPUのグループ(8)と、データ処理性能と電力消費量の小さなCPUのグループ(9)とである。
これによれば、グループ分けを2グループとすることにより制御を過度に複雑化させることなく、形態の定義毎にCPUの割り振りを変えることができる。もちろん、3グループ以上のグループ分けを行っても構わない。
〔7〕<搭載CPUの個数よりも多い組合せ形態数>
項1において、前記CPUの種類と個数の組合せの形態の数は、搭載しているCPUの個数よりも多い。
これによれば、CPUの種類と個数の組合せの形態についての段階を細分化でき、電力消費とデータ処理性能の段階的な制御精度の向上に資することができる。なお、組合せの形態の数は、搭載しているCPUの個数と同じ、もしくはそれ以下であっても良いことは、もちろんである。
〔8〕<ユーザースペースの制御プログラムによってカーネルに通知>
項1において、データ処理に割当てるCPUの種類と個数の制御は、ユーザースペースの制御プログラム(1)によって、データ処理に用いることが可能なCPUの種類と個数をカーネルに通知する処理である。
これによれば、定義情報に基づいてCPUの割当て制御を容易に行うことができる。
〔9〕<コントロールグループと称するカーネル機能>
項8において、前記制御プログラムによって通知する処理は、ユーザースペースからカーネルのスケジューラを制御するカーネル機能によって実現される。
これによれば、カーネルの既存機能を有効に流用することができる。なお、前記制御プログラムによって通知する処理を、カーネル空間で実現してもよいことはもちろんである。
〔10〕<制御プログラムを実行するCPU>
項9において、前記制御プログラムを実行するCPUは、データ処理性能と電力消費量が相対的に小さなCPUのグループ(9)の中の所定のCPUである。
これによれば、高度な処理を要しないデータ処理についてデータ処理性能と電力消費量が相対的に小さなCPUグループのCPUを用いることが、電力消費を低減しようすとるシステムへの適合性に優れる。
〔11〕<データ処理に割当てるCPUの種類と個数の初期割当て設定>
項3において、ブート処理に際して前記所定のCPUは、前記データ処理の環境として少なくともユーザー設定(1f)に応じて前記定義情報から一つの前記形態を選択し、選択した形態に従ってデータ処理に使用するCPUをアクティブにし、使用しないCPUをインアクティブにする(18−5)。
これによれば、システムブートに際して、ユーザー設定により、最初から使用しないCPUについてはその動作をインアクティブにすることにより、最初から無駄な電力消費を抑えることができる。使用しないCPUをシステムブート時にインアクティブにしない場合、当該CPUは電源供給状態のまま待機することになるため、それと比して、さらなる低消費電力を実現することができる。
〔12〕<割当ての更新>
項11において、データ処理に使用するCPUの種類と個数の割当てを更新するとき、インアクティブなCPUを使用対象に割当てる場合は、当該CPUをアクティブ化し、逆にアクティブなCPUを使用対象から除外する場合は、当該CPUをインアクティブ化する(21−2)。
これによれば、CPUの割当てを更新するときにも、使用しないCPUによる無駄な電力消費を抑えることができる。
〔13〕<形態の割当て更新における段階的更新とスキップ更新>
項11において、データ処理に割当てるCPUの種類と個数の割当てを更新するとき、選択する前記形態を、1段ずつ段階的に更新する段階的更新(21)又は選択する前記形態を一度に複数段スキップして更新するスキップ更新(21b)とし、データ処理環境の変化が所定の範囲内のときは前記段階的更新、データ処理環境の変化が前記所定の範囲を超えたときは前記スキップ更新とする。
これにより、急激な負荷の変動などに対してデータ処理の良好な追従性を得る事ができる。例えばCPUがスタンバイ状態を抜けてタスクの実行を開始するとき、段階的更新では即座に高いデータ処理性能を得ることができない場合があるからである。
〔14〕<クロック供給停止又は/及び電源供給停止>
項11において、CPUのインアクティブ化は当該CPUへの同期クロックの供給停止又は/及び電源供給停止であり(21−2)、アクティブ化は当該CPUへの同期クロックの供給開始又は/及び電源供給開始である。
これによれば、CPUのアクティブ化、インアクティブ化の処理を容易に行うことができる。
〔15〕<DVFSによる最大性能の拡張>
項1において、データ処理環境として前記定義情報で定義された最大性能を超える性能要求があったときは、DVFS(Dynamic Voltage/Frequency Scaling)処理(25)を実行して、その要求度合に応じて所定のCPUの電源電圧及び同期クロック周波数の何れか一方又は双方を上昇させる。
これにより、定義情報で定義された最大性能を超える性能要求に対しても容易に応えることができる。特に、最大性能を超える性能要求に対してだけDVFS処理を行うものとすれば、定義情報で定義された形態によるCPUの割当て制御を簡素化することができる。
〔16〕<DVFS処理による制御形態を定義するDVFS定義情報>
項15において、前記性能要求の度合に応じてDVFS処理対象とするCPU及び当該CPUに対する電源電圧及び同期クロック周波数の上昇度合を定義したDVFS用定義情報(図16)を有し、当該定義情報を参照してDVFS処理を実行する。
これによれば、前記最大性能を超える性能要求に応ずる電源電圧及び同期クロック周波数の倍率制御を容易に行うことができる。
〔17〕<データ処理性能と電力消費量が多段階に相違するCPUの種類と個数の組合せ形態>
データ処理性能と電力消費量の異なる複数種類のCPU(8a〜8d,9a〜9d)を種類毎に複数個搭載した非対称マルチCPUシステムにおいて、使用するCPUの種類と個数の組合せをデータ処理の環境に応じてスケーリングする、マルチCPUシステムのスケーリング方法は、
(a)データ処理の環境を判別する判別処理(19)と、
(b)その判別結果に基づいて、全体的なデータ処理性能と電力消費量の最大値が段階的に相違するようにCPUの種類と個数の組合せの複数の形態を定義する定義情報(10,13)から一つの形態を選択する選択処理(21)と、
(c)選択した形態で特定されるCPUにデータ処理を割当てる制御処理(21)と、を含む。
これによれば、データ処理に対するCPUの割当てを定義情報に対する判別処理の結果にしたがって行えばよいから、データ処理性能の高いCPUには負荷の大きなタスクだけを割当て、低消費電力のCPUには負荷の小さなタスクだけを割当てるようにする制御をOSのタスクスケジューラ若しくはタスクディスパッチャーに全て依存しなくてもよく、そのような処理のためにOSのタスクスケジューラ若しくはタスクディスパッチャーを最適化することを要しない。また、最大で全てのCPUを利用可能であるからCPUリソースの稼動効率もよく、更に、CPUに対するデータ処理の割当てで実現できる性能が、高いデータ処理性能か、低いデータ処理性能かに限定されず、中間的なデータ処理性能も実現できるから、無駄な電力を消費する虞はほとんど想定されない。したがって、その方法を利用することにより、データ処理負荷などのデータ処理環境に応じて無駄な電力消費を抑え且つ必要なデータ処理性能を容易に実現することができる。
〔18〕<データ処理性能と電力消費量が段階に増加する方向に組合せた形態>
項17において、前記定義情報が保有するCPUの種類と個数の組合せの複数の形態は、データ処理性能と電力消費量を段階的に増加させる方向にCPUの種類と個数を組合せた形態(10,13)である。
これによれば、必要な処理性能を満足する最小性能の形態を一意的に選択可能である。
〔19〕<要求される処理性能を段階的に満たす方向に組合せた形態で>
項17において、前記定義情報が保有するCPUの種類と個数の組合せの複数の形態は、データ処理の環境に応じて要求される処理性能を段階的に満たす方向にCPUの種類と個数を組合せた形態(10,13)であり、要求される処理性能を満たす最小性能の形態を選択する。
これによれば、必要な処理性能を満足する最小性能の形態を一意的に選択可能である。
〔20〕<データ処理の負荷、発熱状況、電池残量、ユーザー設定>
請求項18又は19において前記データ処理の環境は、データ処理の負荷(1b)の大小で把握される第1環境、データ処理の負荷の大小及び発熱状況(1c)で把握される第2環境、データ処理の負荷の大小、発熱状況及び電池残量(1d)で把握される第3環境、又はユーザー設定(1e,1f)、データ処理の負荷の大小、発熱状況及び電池残量で把握される第4環境である、マルチCPUシステムのスケーリング方法。
これによれば、第1環境により、データ処理能力に対する余裕度と言う点でデータ処理の環境を把握することができる。第2環境により、発熱状況を考慮したデータ処理能力の余裕度と言う点でデータ処理の環境を把握することができる。第3環境により、発熱状況と電源供給限界を考慮したデータ処理能力の余裕度と言う点でデータ処理の環境を把握することができる。第4環境により、発熱状況と電源供給限界を考慮したデータ処理能力の余裕度と言う点でデータ処理の環境を把握することができると共に、ユーザー設定をデータ処理環境に反映させることができる。
〔21〕<データ処理性能と電力消費量によるCPUの発熱状況>
項20において、前記発熱状況は、データ処理性能と電力消費量の相対的に大きなCPUのグループに含まれるCPUの発熱状況である。
これによれば、データ処理能力に影響を及ぼす発熱状態の把握が可能になる。もちろん、データ処理性能と電力消費量が相対的に小さなCPUのグループ中のCPUの発熱状況を監視することでも構わない。
〔22〕<データ処理性能と電力消費量の大きな種類と小さな種類>
項17において、前記CPUの種類は、CPUのデータ処理性能と電力消費量の大小の別に応じて分類されたCPUの複数のグループである。例えば、前記CPUの種類は、データ処理性能と電力消費量の大きなCPUのグループ(8)と、データ処理性能と電力消費量の小さなCPUのグループ(9)とである。
これによれば、グループ分けを2グループとすることにより制御を過度に複雑化させることなく、形態の定義毎にCPUの割り振りを変えることができる。もちろん、3グループ以上のグループ分けを行っても構わない。
〔23〕<搭載CPUの個数よりも多い組合せ形態数>
項17において、前記CPUの種類と個数の組合せの形態の数は、例えば、搭載しているCPUの個数よりも数の多くすることが望ましい。
これによれば、CPUの種類と個数の組合せの形態についての段階を細分化でき、電力消費とデータ処理性能の段階的な制御精度の向上に資することができる。
なお、組合せの形態の数は、搭載しているCPUの個数と同じ、もしくはそれ以下であっても良いことは、もちろんである。
〔24〕<ユーザースペースの制御プログラムによってカーネルに通知>
項17において、データ処理に割当てるCPUの種類と個数を制御する処理は、ユーザースペースの制御プログラム(1)によって、データ処理に用いることが可能なCPUの種類と個数をカーネルに通知する処理である。
これによれば、定義情報で参照した形態をCPUの割当て制御に容易に橋渡しすることができる。
〔25〕<コントロールグループと称するカーネル機能>
項17において、前記制御プログラムによって通知する処理は、ユーザースペースからカーネルのスケジューラを制御するカーネル機能によって実現される。
これによれば、カーネルの既存機能を有効に流用することができる。
〔26〕<制御プログラムを実行するCPU>
項25において、前記制御プログラムを実行するCPUは、データ処理性能と電力消費量が相対的に小さなCPUのグループ(9)中の所定のCPUである。
これによれば、高度な処理を要しないデータ処理についてデータ処理性能と電力消費量が小さなCPUを用いることが、電力消費を低減しようすとるシステムへの適合性に優れる。
〔27〕<データ処理に割当てるCPUの種類と個数の初期割当て設定>
項26において、ブート処理に際して前記所定のCPUは前記データ処理の環境として少なくともユーザー設定(1f)に応じて前記定義情報から一つの前記形態を選択し、選択した形態に従ってデータ処理に使用するCPUをアクティブにし、使用から外されるCPUをインアクティブにする(18−5)。
これによれば、システムブートに際して、ユーザー設定により最初から使用しないCPUについてはその動作をインアクティブにすることにより、最初から無駄な電力消費を抑えることができる。使用しないCPUをインアクティブにしない場合には、当該CPUは電源供給状態のまま待機することになり、これよりも低消費電力を実現することができる。
〔28〕<割当ての更新>
項27において、データ処理に使用するCPUの種類と個数の割当てを更新するとき、インアクティブなCPUを使用対象に割当てる場合は当該CPUをアクティブ化し、逆にアクティブなCPUを使用対象から外す場合は当該CPUをインアクティブ化する(21−2)。
これによれば、CPUの割当てを更新するときにも不使用に変更されるCPUによる無駄な電力消費を抑えることができる。
〔29〕<形態の割当て更新における段階的更新とスキップ更新>
項27において、データ処理に割当てるCPUの種類と個数の割当てを更新するとき、選択する前記形態を、1段ずつ段階的に更新する段階的更新(21)又は選択する前記形態を一度に複数段飛越して更新するスキップ更新(21b)とし、データ処理環境の変化が所定の範囲のときは前記段階的更新、データ処理環境の変化が前記所定の範囲を超えたときは前記スキップ更新とする。
これにより、急激な負荷の変動などに対してデータ処理の良好な追従性を得る事ができる。例えばCPUがスタンバイジョイ状態を抜けてタスクの実行を開始するとき段階的更新では即座に高いデータ処理性能を得ることができない場合があるからである。
〔30〕<クロック供給停止又は/及び電源供給停止>
項27において、CPUのインアクティブ化は当該CPUへの同期クロックの供給停止及び電源供給停止であり(21−2)、アクティブ化は当該CPUへの同期クロックの供給開始及び電源供給開始である。
これによれば、CPUのアクティブ化、インアクティブ化の処理を容易に行うことができる。
〔31〕<DVFSによる最大性能の拡張>
項17において、データ処理環境として前記定義情報で定義された最大性能を超える性能要求があったときは、DVFS(Dynamic Voltage/Frequency Scaling)処理(25)を実行して、その要求度合に応じて所定のCPUの電源電圧及び同期クロック周波数の何れか一方又は双方を上昇させる。
これにより、定義情報で定義された最大性能を超える性能要求に対しても容易に答えることができる。特に、最大性能を超える性能要求に対してだけDVFS処理を行うものとすれば、定義情報で定義された形態によるCOUの割当て制御を簡素化することができる。
〔32〕<DVFS処理による制御形態を定義するDVFS定義情報>
項31において、前記性能要求の度合に応じてDVFS処理対象とするCPU及び当該CPUに対する電源電圧及び同期クロック周波数の上昇度合を定義したDVFS用定義情報(図16)を有し、当該定義情報を参照してDVFS処理を実行する。
これによれば、前記最大性能を超える性能要求に応ずる電源電圧及び同期クロック周波数の倍率制御を容易に行うことができる。
2.実施の形態の詳細
実施の形態について更に詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
《マルチCPUシステム》
図2には非対称マルチCPUシステムのシステム構成例が示される。特に制限されないが、同図には、プロセッサ100と周辺機器101がバス(若しくはネットワーク)102を介して接続されたシステム構成が例示される。プロセッサ100はシングルチップで構成されていても或いはマルチチップで構成されていてもよい。周辺機器101は各種デバイスや装置によって構成されて良い。例えばマルチCPUシステムとして携帯情報通信端末装置を想定すると、プロセッサ100は通信プロトコル処理及びアプリケーション処理などを行い、周辺機器101は液晶ディスプレイ、タッチパネル、バッテリーなどを有する。
ここで、プロセッサ100は、データ処理性能と電力消費量の異なる複数種類のCPUを種類毎に複数個搭載した非対称マルチプロセッサとして構成される。プロセッサ100は複数種類のCPU(中央処理装置)として、データ処理性能が高く電力消費の大きなCPUの第1グループ(BigCPUs)8と低消費電力でデータ処理性能が低いCPUの第2グループ(LittleCPUs)9とを有する。第1グループ8のCPU(BigCPU)は、特に制限されないが、参照符号8a〜8dで示された4個のCPU(CPU_B#0〜CPU_B#3)であり、第2グループ9のCPU(LittleCPU)は、特に制限されないが、参照符号9a〜9dで示された4個のCPU(CPU_L#0〜CPU_L#3)である。第1グループ8のCPU8a〜8dと第2グループ9のCPU9a〜9dの夫々は同じアーキテクチャを有する。例えば第1グループ8のCPU8a〜8dに対して第2グループ9のCPU9a〜9dがキャッシュメモリの構成が異なる場合、ソフトウェアエミュレーションによって、全く同じアーキテクチャとなるように仮想的に実現されている。第1グループ8のCPU8a〜8d及び第2グループ9のCPU9a〜9dはバス110を介してメモリ111、入出力インタフェース回路112、及び周辺モジュール113に接続される。周辺モジュール113は、特に図示はしないが、割り込みコントローラ、DMA(Direct Memory Access)コントローラ、通信コントローラなどを有する。入出力インタフェース回路112は周辺機器101に接続される。
《プロセッサのハードウェア及びソフトウェアの構成》
図1にはプロセッサ100のハードウェア及びソフトウェアの構成を階層的に例示する。ここでは、ハードウェア層(HW)120、ファームウェア層(Firmware)121、カーネル層(Kernel)122、ユーザースペース層(Userspace)123の4階層で構成されている。
上記第1グループ(BigCPU)8のCPUと第2グループ9のCPU(LittleCPU)は各々任意の個数であっても構わないが、ここでは説明をわかりやすくするために、上述のとおり、高性能を優先して消費電流も大きい4個のCPU(BigCPU)8a〜8dと性能をほどほどにして消費電流を抑えた4個のCPU(LittleCPU)9a〜9dで構成されるものとする。
ファームウェア層(Firmware)121はブートコード(Boot)7などの下位ソフトウェア群であり、例えばメモリ111のROMに格納されている。
カーネル層(Kernel)122はLinux(登録商標)などのオペレーティングシステム(OS)であり、図1には代表的なコンポーネントであるスケジューラ(Scheduler)4、デバイスドライバ(Device Driver)5、及びパワーマネジメント(Power Management)6の各機能が示されている。スケジューラ(Scheduler)4はタスク管理に用いられる機能であり、データ処理を構成するプロセスを優先順位などにしたがって動作可能なCPUに割当てるスケジューリング若しくはディスパッチを行う。デバイスドライバ(Device Driver)5はビデオカードやLANカードなどのハードウェアデバイスと情報を入出力するためのデバイス管理を行う。パワーマネジメント6はサスペンド/レジュームなどの電源管理、そしてシステム負荷や温度などに応じた電源電圧及び周波数の動的制御(DVFS)を行う。
ユーザー層(Userspace)123ではユーザーのアプリケーションソフトウェアが実行される。図1ではこのアプリケーションソフトウェアを要求処理性能が低いままのスロープロセスグループ(Slow Process Group)3と、要求処理性能が状況によって高くなったり低くなったり変化するダイナミックプロセスグループ(Dynamic Process Group)2の2つのグループに分類する。また、図1では左側に位置しているソフトウェアはCPU(BigCPU)8a〜8dで実行され、右側に位置するソフトウェアはCPU(LittleCPU)9a〜9dで実行する。スロープロセスグループ3はCPU(LittleCPU)9a〜9dで実行するので右側に、ダイナミックプロセスグループ4は要求処理性能によって、CPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dで実行するので図1の左右にまたがるように配置してある。ダイナミックプロセスグループ4を実行するCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dの組合せはガバナ(Governor)1が要求処理性能に応じて制御信号1aで切替える。この切替えはガバナ1からカーネル122のスケジューラ4に作用して行われる。この作用は、リナックス(登録商標)OSがサポートするコントロールグループ(Cグループ)と称するカーネル機能(カーネルがサポートする制御プログラム)を用いて行われる。ガバナ(Governor)1は例えばアンドロイド(登録商標)OSがサポートする制御プログラムを流用することが可能である。なお、ガバナ(Governor)1がカーネル内にあっても良いことはもちろんである。
次に、CPUの組合せを切替える仕組みについて説明する。
《CPUの組合せを切替える仕組みの代表例》
図3にはCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dとの組合せの形態が例示される。図においてCPU(BigCPU)8a〜8dをB1〜B4と図示し、CPU(LittleCPU)9a〜9dをL1〜L4と図示する。ここでは、CPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dとの組合せのグループを表す仮想プロセッサVi(i=1~12)という概念を導入する。図3の行列式は4個のCPU(BigCPU)8a〜8dと4個のCPU(LittleCPU)9a〜9dで構成するベクタ12を12個の仮想プロセッサVi=(i=1〜12)にマッピングしている。マッピングした状態は13で示される「可能な組合せ」として図示される。図3ではCPU(LittleCPU)9a〜9dの夫々のCPUの性能を単位(1)としてCPU(BigCPU)8a〜8dの性能がその2倍、消費電流についてもCPU(BigCPU)8a〜8dが2倍と設定してある。よって仮想プロセッサViの添え字iは性能を示す。行列11は4個のCPU(BigCPU)8a〜8dと4個のCPU(LittleCPU)9a〜9dを13で示される組合せにしたがって12個の仮想プロセッサVi(i=1〜12)にマッピングする変換行列である。
12個の仮想プロセッサVi(i=1〜12)及び13で示される組合せの形態は、全体的なデータ処理性能と電力消費量の最大値が段階的に相違するようにCPU8a〜8d,9a〜9dの組合せの複数の形態を定義する定義情報としての性質を有する。換言すれば、12個の仮想プロセッサVi(i=1〜12)及び13で示される組合せの形態は、データ処理性能と電力消費量を段階的に増加させる方向にCPUの種類と個数を組合せた形態である。更に観点を変えれば、それは、処理負荷などのデータ処理の環境に応じて要求される処理性能を段階的に満たす方向にCPUの種類と個数を組合せた形態であり、要求される処理性能を満たす最小性能の形態を指定可能にする、複数の組合せ形態のマッピングである。
図4A及び図4BにはCPUの組合せの比較例が示される。図4Aはシステム負荷などに応じて、使用するCPUのグループ8と9を排他的に切替える手法が例示される、図4Bにはデータ処理性能の高いCPUのグループ8に含まれるCPU8a〜8dと低消費電力のCPUのグループ9に含まれるCPU9a〜9dとを一対一対応させ、対応されるCPUの間で、システム負荷に応じて使用するCPUを排他的に切替える手法が例示される。この場合も図3と同様にCPU9a〜9dと8a〜8dとの処理性能及び電力消費との関係を1:2とすると、図4A及び図4Bの場合におけるCPUの種類と個数に関する組合せは図5A及び図5Bのようになる。
図4A及び図4Bの場合には最大で4個のCPUしか選択できないから、13aの「可能な組合せ」の例からも明らかなように、性能値9以上のV9〜V12を実現することができない。V9以上の性能が要求された時にはCPUの周波数を上げることで対応できるが同時に電源電圧を上げることが必要になるが、消費電流は周波数の1乗、電圧の2乗に比例するのでやはり無駄な消費電力を消費することになってしまう。
図6には仮想プロセッサの割当て処理の制御フローチャートが例示される。まず、消費電力を抑えたCPU(LittleCPU)9a〜9dの内の所定の一つのCPUでブートコード7を実行して、OSのカーネル(スケジューラ4、デバイスドライバ5及びパワーマネジメント6のコードを含む)122を、ブートコード7を実行した上記所定のCPUで起動する。特に制限されないが、図6においてステップ18の処理には、それに続けてユーザースペース123でスロープロセスグループ3に含まれるプログラムを実行するところまでを含むものとする。
ステップ19では、ガバナ(Governor)1が、データ処理環境として、熱の発生状況(Temperature)1c、電池残容量(Battery Level)1d、データ処理の負荷である処理負荷(CPU Load)1bをこの順番にチェックする。チェック結果に従って仮想プロセッサViの切換えが必要かを判断する(ステップ20)。変更が必要と判別された場合には、適切な仮想プロセッサViを選択して、これをダイナミックプロセッサグループ2に割当てる(ステップ21)。
ガバナ1が、熱の発生状況1c、電池残容量1d、処理負荷1bの情報をどのように入手するかの一例は図7に例示される。熱の発生1cと電池残容量1dは各々ハードウェア層120のサーマルセンサ(Thermal Sensor)25とバッテリーセンサ(Battery Sensor)26からデバイスドライバ(Device Driver)5経由で入手する。処理負荷(CPU Load)1bはカーネル層122のスケジューラ4からから入手する。処理負荷1bは例えばCPU占有率によって把握する。尚、図7ではファームウェア層121は図示を省略してある。
ガバナ(Governor)1がどのようにして仮想プロセッサViの切換えが必要かを判別し、その結果に従って適切な仮想プロセッサViをどのように選択するのか、という処理例を、図8を参照しながら説明する。図8には前記の3つの入力である熱の発生状況(Temperature)1c、電池残容量(Battery Level)1d、処理負荷(CPU Load)1bに従って適切な仮想プロセッサViを選択する動作(Operation)がまとめてある。図8の中の閾値などの具体的な数値やOperation(Choose V1など)は仕組みを説明するための単なる一例であり、実際のシステムに応じて変化可能であることは言うまでもない。図8の例では温度が摂氏70度より大きい場合、異常事態と判断して電池残容量や処理負荷にかかわらず仮想プロセッサとして一番消費電流の小さいV1を選択する。
ステップ20において、仮想プロセッサの変更が必要か否かの判別条件の一例が図8に示される。図8でOperationがNOPの場合、すなわち温度が摂氏70度以下で、電池残容量が50%以上かつ処理負荷が30%以上70%以下の場合と、電池残容量が50%以下かつ処理負荷が30%以上の場合の2条件となる。図6のステップ21で適切な仮想プロセッサ Vi を選択する条件は、図8においてで上記以外の残りの3つの条件となることが分かる。すなわち温度が摂氏70度以下で、電池残容量が50%以上かつ処理負荷が70%より大きい場合は、一つ上の処理量の仮想プロセッサを割当てる(Vi→Vi+1)。逆に処理負荷が30%より小さい場合は一つ下の処理量の仮想プロセッサに移行する(Vi→Vi−1)。電池残容量が50%以下の場合は処理負荷が30%より小さい場合には一つ下の処理量の仮想プロセッサに移行する(Vi→Vi−1)。但し、図8の例では、既に最大処理性能のV12や最小処理性能のV1に割当てられていて、現状より上や下に移行できない場合は現状に留まるようにされることは言うまでもない。
図6のステップ21で仮想プロセッサViをダイナミックプロセスグループに割当て後、イベントを待つ(ステップ22)。イベント待ちの間に、ステップ21で割当てたれた仮想プロセッサViで図1のダイナミックプロセスグループ2のプロセスが実行される。ステップ22で待つイベントは、再度、仮想プロセッサ割当て処理を要求するイベントであり、例えば、ある時間間隔で起動されるタイマー割込みや、温度が所定の閾値以上に上昇した場合の熱センサー割込みなどである。ここで説明した熱の発生状況の確認と取り扱いは一例であり、必須条件ではない。以上説明したステップ19乃至22の処理は一連のプログラム処理の終了がステップ23で判定されるまで繰り返し行われる。
仮想プロセッサViの割当て処理を制御する図1のガバナ(Governor)1は例えばCPU(LittleCPU)9a〜9dの内の一つのCPUで動作させるものとした。図ではユーザースペース層123にあるがカーネル層122にあってもよい。ユーザースペース層123のソフトウェアで高性能処理が必要なものは、仮想プロセッサViを動的に切替えられるダイナミックプロセスグループ2に入れておく。以上説明したように、ダイナミックプロセスグループ2のデータ処理に対するCPUの割当て、すなわち仮想プロセッサViの割当てを、図8に例示するルールに基づいて図3定義情報にしたがって行えばよい。要するに、電池の残容量や、プロセッサ内の熱の発生状況、又は実行するプログラムの負荷に従って、データ処理に用いるCPUのセットをCPU(Big CPU)8a〜8dとCPU(Little CPU)9a〜9dの最適な組合せで実行することができる。したがって、データ処理性能の高いCPUには負荷の大きなタスクだけを割当て、低消費電力のCPUには負荷の小さなタスクだけを割当てるようにする制御をOSのスケジューラ4(若しくはタスクディスパッチャー)に全て依存しなくてもよい。したがって、そのような処理のためにOSのスケジューラ4(若しくはタスクディスパッチャー)を最適化することを要しない。また、最大で全てのCPU8a〜8d、9a〜9dを利用可能であるからCPUリソースの稼動効率もよく、更に、CPUに対するデータ処理の割当てで実現できる性能が、高いデータ処理性能か、低いデータ処理性能かに限定されず、中間的なデータ処理性能も実現できるから、無駄な電力を消費する虞はほとんど想定されない。したがって、データ処理負荷などのデータ処理環境に応じて無駄な電力消費を抑え且つ必要なデータ処理性能を容易に実現することができる。
《仮想プロセッサViの割当て更新における段階的更新とスキップ更新》
仮想プロセッサViの割当てルールの一例として示した図8は、仮想プロセッサViの割当てを更新するとき、仮想プロセッサViを、1段ずつ段階的に更新する段階的更新とする。これだけに限定されるものではなく、更新先の仮想プロセッサViを一度に複数段飛越して(スキップして)更新するスキップ更新を採用する事が可能である。図9には仮想プロセッサViの段階的な更新と共にスキップ更新も採用可能にした場合の仮想プロセッサ割当てフローが例示される。ここではユーザーから仮想プロセッサ選択の急上昇、急降下の指示がある場合の例を示す。ユーザーが負荷の重たいアプリケーションを立ち上げる場合には仮想プロセッサ選択の急上昇が、負荷の重たいアプリケーションの実行終了後には電池容量の無駄な消耗を減らすために、すみやかな急降下が必要 となる。図7のユーザーインストラクション(User Instruction)1eによる急上昇、急降下の指示があれば仮想プロセッサの変更が必要と判別され(図9のステップ20)、その要因が急上昇又は急降下の指示であるかの判定が次のステップ20bで行われる。急上昇又は急効果の指示がある場合にはステップ21bの指示に従った仮想プロセッサViの選択を行う。この例では急上昇の場合、最大性能のV12を選択し、急降下の場合は最小性能のV1を選択しているが、個別の要求に従った任意の選択とすることは妨げられない。
《CPUの電源制御》
ユーザー設定や、電池残量が少なくなった時のポリシーが省電優先となっている場合は、使用しないCPUの電源を動的に落とす仕組みを更に採用することによって、更なる消費電力の削減が可能になる。またプロセッサ100内部の温度が異常に上昇した時にCPU(Big CPU)8a〜8dに関連の電源を全て落とすことで温度を下げることが可能となる。このことを更に適用した具体例について説明する。図10にはCPUの電源制御も考慮したときのプロセッサ100のハードウェア及びソフトウェアの構成を階層的に例示する。ここでの説明に直接関係のない部分は図示を省略した。
図1に対して図10で追加した重要なコンポーネントは、CPUホットプラグ(CPUHotplug)6aとパワーマネージメントワードウェア(PowerManagement HW)14である。CPUホットプラグ(CPUHotplug)6aはリナックス(登録商標)カーネル(Linux Kernel)のパワーマネジメント(PowerManagement)6の一機能で、ハードウェア層120のパワーマネージメントハードウェア14を用いることにより、搭載されている全てのCPU8a〜8d,9a〜9dの電源のオン・オフを、その稼働中に実行できる。他のOSを使用する場合でも同等の機能が使用できる。CPUホットプラグ6aはユーザースペース層123へのインタフェースを持っており、図10の例では、が例えばガバナ(Governor)1からこのインタフェースを制御することで、図1に基づいて説明した省電効果を更に強化することができる。
図11には図10の構成を採用した場合における初期化部分の処理フローが例示される。図11に示す初期化部分は図6の図4のブート処理(Boot)18に対応されえる。
図11のステップ18−1では
各種設定を行う。例えば、使用するオンチップモジュール類全ての電源オン、クロック周波数設定、割り込みベクタテーブルの設定などを行う。各種設定を行った後にカーネル層(Kerne)122のプログラムを起動する(ステップ18−2)。カーネル層122のプログラムを起動した後に初期化処理の一環として、ユーザー設定モード、温度及び電池残量をチェックし(ステップ18−3)、そのチェック結果に基づいて、動作させるべきCPUを減らす必要があるか否かを判別する(ステップ18−4)。減らす必要があるときは、不要なものをCPUホットプラグ6aの機能を用いて使用対象から除外する(ステップ18−5)。
図12にはステップ18−4、18−5で不要なCPUを減らす時の判断に使用する規準を規定するテーブルの一例が示される。熱の発生状況(Temperature)1c、電池残容量(Battery Level)1d、ユーザーセッティング(User Setting)1fに従ってCPUを減らすための処理(Operation)が行われる。処理(Operation)の内容はその仕組みを説明するための単なる一例であり、実際のシステムに応じて変化可能であることは言うまでもない。図12の例では温度が摂氏70度より大きい場合、異常事態と判断して電池残容量やユーザーセッティングにかかわらずCPU(LittleCPU)9a〜9dの内の一つのCPUの電源だけをオンにする。温度が摂氏70度より低い場合は、処理能力を重視するのか、或いは低消費電力を優先させるのか、というユーザーセッティングとバッテリーレベルに従った選択が行われる。
ブート処理においてユーザー設定等に従って、使用するCPUの電源をオン、使用しないCPUの電源をオフにすることにより、システムブートに際して、ユーザー設定により最初から使用しないCPUについてはその動作をインアクティブにすることができるから、最初から無駄な電力消費を抑えることができる。使用しないCPUをインアクティブにしない場合には、当該CPUは電源供給状態のまま待機することになり、これよりも低消費電力を実現することができる。
次に、初期設定後のシステム稼働中に、データ処理に使用するCPUの種類と個数の割当てを更新可能にすることについて説明する。システム稼働中にも図10のガバナ(Governor)1からCPUホットプラグ6aを制御することで省電力効果を更に強化する。図13にはその処理フローが例示される。
図13では図6のフローチャートにステップ21−2を追加した。ガバナ(Governor)1が適切な仮想プロセッサViを選択してダイナミックプロセスグループ2に割当てた後、使用しなくなったCPUの電源をCPUホットプラグ6aで動的にオフにする。電源をオフすることで無駄なリーク電流が流れなくなり大きな省電力効果が得られる。特に動作中の消費電流だけでなくリーク電流の大きいパフォーマンス重視のCPU(BigCPU)8a〜8dの電源を、使用していない場合にオフできる効果は大きい。
《DVFS制御》
仮想プロセッサViの割当てが動的に切替えられるダイナミックプロセスグループ2へのCPUの割当てがCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dの8個全てになってきる状態で、更に性能向上要求が来ても、図3の選択形態だけではその状態にとどまり性能向上は得られない。消費電力を増加させてもよいならば、CPUの電圧と周波数の両者をアップすることで更なる性能向上が可能である。この技術はDVFS(Dynamic Voltage Frequency Scaling)という名前で知られている。しかし消費電力は電圧の2乗、周波数の1乗に比例するため、消費電力の増加を必要最低限に抑えるために極め細かい制御が必要である。非対称マルチプロセッサシステムでの効率のよい実装方法は知られていない。前述の図10の例に対してDVFS制御を更に組合せることで消費電力を必要最低限に抑えて連続的な性能向上を図る制御が可能になる。図14にはDVFS制御を更に追加したプロセッサ100のハードウェア及びソフトウェアの構成を階層的に例示する。ここでの説明に直接関係のない部分は図示を省略した。
図14で採用した重要なコンポーネントは、DVFS6b、パワーマネージメントハードウェア(PowerManagement HW)14、及びクロックコントロールハードウェア(Clock Control HW)16である。DVFS6bはリナックス(登録商標)カーネル(Linux Kernel)のパワーマネジメント(PowerManagement)6の一機能で、ハードウェア層120のパワーマネージメントハードウェア(PowerManagement HW)14とクロックコントロールハードウェア(Clock Control HW)16を用いて、搭載されている全てのCPU8a〜8d,9a〜9dの電源電圧14a,14bと同期クロック16a,16bを連動させて動的に制御する。DVFS6bはガバナ1から与えられるブーストリクエスト(Boost Request)15に応答して制御を開始する。
図15には図6にDVFS処理を追加した制御フローが例示される。同図から明らかなように、仮想プロセッサViの割当てが動的に切替えられるダイナミックプロセスグループ2がCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dの8個全てを使用している最高性能(V12)が選択されている状態で(ステップS20c参照)、更に性能向上要求が来た時にDVFS処理(ステップ25)を実行する。
図16にはステップ25のDVFS処理の内容が例示される。本明細書の例ではCPU(LittleCPU)9a〜9dの処理性能を基準の1とし、CPU(BigCPU)8a〜8dの処理性能を2と想定しているが、ここでは更に両方のグループ8,9のCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dに当初供給されている電源電圧を基準の1として、ステップ25のDVFS処理でこの電源電圧を1.2倍に上げて同期クロック周波数もそれに連動して高速化するものとすると、両方のグループ8,9のCPU(BigCPU)8a〜8dとCPU(LittleCPU)9a〜9dの処理性能が各々1.5と3になるものと想定する。但し、これらの想定はこの例をわかりやすく説明するためのもので実際のシステムに応じて変化することは言うまでもない。
図16ではDVFS処理を適用する前の仮想プロセッサV12における最高性能の状態(合成性能が12)を基準に性能向上の複数の形態を例示してある。これを基準に、例えば合計性能の13を実現する場合は、CPU(LittleCPU)19a〜19dの内の2個のCPUにDVFS処理を適用する。CPU(LittleCPU)9a〜9dの内の2個の性能が各々、1から1.5に向上するので性能内訳に記述してあるように合計性能が13となる。合計性能が14以上の場合も同様である。「BigCPU電圧」、「Little CPU電圧」の欄には、性能向上に必要な電圧の増加も性能向上に応じて増加するように記載されている。例えば合計性能の14を実現する場合、CPU(LittleCPU)9a〜9dの内の2個とCPU(UBigCPU)8a〜8dの内の1個にDVFS処理を適用することも可能であるが、ステップ25のDVFS処理では図16の定義に従った定義情報に従って、片方の電源電圧だけを1.2に増加させる形態を選択するものとする。双方のグループのCPUの電源電圧を上げるよりも、低電力のCPU(LittleCPU)だけに対して電源電圧を上げた方が低消費電力に優れるからである。
一旦要求性能に応じてデータ処理性能を高くした後、要求性能が低くなった時も同様に図16の定義に従って周波数と電源電圧を下げていくことになる。
《仮想プロセッサの変更に及ばないシステム負荷変動に対するCPUクロック制御》
図8に示される仮想;プロセッサの選択若しくは更新の論理において仮想プロセッサの変更に及ばないシステム負荷変動に対して仮想プロセッサVi選択のオペレーション(Operation)はノンオペレーション(NOP)としたが、これに限定されない。図17のように、選択されている仮想プロセッサの処理性能の範囲から隣の処理性能の仮想プロセッサの性能の範囲に入らない範囲で、CPUの同期クロック周波数をスケーリングするようにしてもよい。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えばCPUの種類はデータ処理性能の高いCPUのグループと低消費電力のCPUのグループとの2種類に限定されず、その中間のデータ処理能力を有するCPUのグループを追加したりして、3種類以上とすることも可能である。また、一つのグループに属するCPUの数は4個に限定されず、各グループに属するCPUの数も揃っていることに限定されない。本明細書においてCPUはプロセッサコアと同義である。したがって、CPUは演算部、命令制御部、データフェッチ部だけでなく、キャッシュメモリ、アドレス変換バッファ、RAM、FPUなどのアクセラレータのハードウェアを含んでも、また、それらをソフトウェアでエミュレーションする機能を備えたものであって良いことは言うまでもない。
また、全体的なデータ処理性能と電力消費量の最大値が段階的に相違するように定義情報によって定義されるCPUの種類と個数の組合せの複数の形態は、図3に例示されるようなV1〜V12の複数段階の形態に限定されず、組合せ内容や段階の数は適宜変更可能である。
また、データ処理の環境に応じて前記定義情報から選択した形態で特定されるCPUにデータ処理を割当てる処理は、特定のCPUがガバナやCグループの制御プログラムを用いてカーネル層122のスケジューラ4に作用する手法に限定されない。カーネル層122の他の機能を用いて実現することも可能である。
データ処理の環境は、データ処理の負荷、発熱状況、電池残量、ユーザー設定に限定されない。
また、上記ではデータ処理の環境として把握する要素として、ユーザー設定(1e、1f)、データ処理の負荷(1b)の大小、発熱状況(1c)及び電池残量(1d)を説明したが、必ずしもそれに限定されない。また、それら要素は、データ処理の負荷(1b)の大小単独で把握し、データ処理の負荷(1b)の大小及び発熱状況(1c)で把握し、又は、データ処理の負荷(1b)の大小、発熱状況(1c)及び電池残量(1d)で把握してもよい。
マルチCPUシステムは所謂big.LITTLE CPUコアを搭載したSoC(System on a chip)やマイクロコンピュータなどを用いた電子機器(データ処理システム)に応用することができる。
本発明はデータ処理性能と電力消費量の異なる複数種類のCPUを種類毎に複数個搭載した非対称マルチCPUシステム、更には、そのようなシステムにおいて、使用するCPUの種類と個数の組合せをデータ処理の環境に応じてスケーリングする、マルチCPUシステムのスケーリング方法に広く適用することができる。たま、スマートフォンに代表されるバッテリ駆動型の携帯情報端末装置などに適用することができる。
1 ガバナ(Governor)
1a 要求処理性能に応じた制御信号
1b 処理負荷(CPU Load)
1c 熱の発生状況(Temperature)
1d 電池残容量(Battery Level)
1e ユーザーインストラクション(User Instruction)
1f ユーザーセッティング(User Setting)
2 ダイナミックプロセスグループ(Dynamic Process Group)
3 スロープロセスグループ(Slow Process Group)
4 スケジューラ(Scheduler)
5 デバイスドライバ(Device Driver)
6 パワーマネジメント(Power Management)
6a CPUホットプラグ(CPUHotplug)
6b DVFS
7 ブートコード(Boot)
8 データ処理性能が高く電力消費の大きなCPUの第1グループ(BigCPUs)
8a〜8d 第1グループ8のCPU(CPU_B#0〜CPU_B#3)
9 低消費電力でデータ処理性能が低いCPUの第2グループ(LittleCPUs)
9a〜9d 第2グループ9のCPU(CPU_L#0〜CPU_L#3)
Vi 仮想プロセッサ
14 パワーマネージメントワードウェア(Power Management HW)
14a、14b 電源電圧
15 ブーストリクエスト(Boost Request)
16 クロックコントロールハードウェア(Clock Control HW)
16a,16b 同期クロック
100 プロセッサ
101 周辺機器
102 バス(若しくはネットワーク)
110 バス
111 メモリ
112 入出力インタフェース回路
113 周辺モジュール
120 ハードウェア層(HW)
121 ファームウェア層(Firmware)
122 カーネル層(Kernel)
123 ユーザースペース層(User space)

Claims (3)

  1. データ処理性能と電力消費量の異なる複数種類のCPUを種類毎に複数個搭載した非対称マルチCPUシステムであって、
    全体的なデータ処理性能と電力消費量の最大値が段階的に相違するように複数の仮想プロセッサとCPUの種類及び個数の組合せ形態との対応関係を規定する定義情報と、データ処理の環境といずれの前記仮想プロセッサを選択すれば良いかを示す仮想プロセッサの選択情報とを対応付けるCPUの割当てルール情報と、を有し、前記CPUの割当てルール情報からデータ処理の環境に応じた仮想プロセッサの選択情報を選択し、該選択した仮想プロセッサの選択情報に基づいて前記定義情報の複数の仮想プロセッサの中から一つの仮想プロセッサを選択し、該選択した一つの仮想プロセッサに対応する前記定義情報のCPUの種類及び個数の組合せで特定されるCPUにデータ処理を割当て、
    データ処理に割当てるCPUの種類と個数の制御は、ユーザースペースの制御プログラムによって、データ処理に用いることが可能なCPUの種類と個数をカーネルに通知する処理であり、
    前記CPUの割当てルール情報は、システムブートに際して、ユーザー設定により最初から使用しないCPUについてはその動作をインアクティブにすることを含む、マルチCPUシステム。
  2. 請求項1において、前記制御プログラムによって通知する処理は、前記ユーザースペースからスケジューラを制御するカーネル機能によって実現される、マルチCPUシステム。
  3. 請求項2において、前記制御プログラムを実行するCPUは、データ処理性能と電力消費量が相対的に小さなCPUのグループ中の所定のCPUである、マルチCPUシステム。
JP2015517999A 2013-05-23 2013-05-23 マルチcpuシステム Active JP6483609B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/064370 WO2014188561A1 (ja) 2013-05-23 2013-05-23 マルチcpuシステム及びマルチcpuシステムのスケーリング方法

Publications (2)

Publication Number Publication Date
JPWO2014188561A1 JPWO2014188561A1 (ja) 2017-02-23
JP6483609B2 true JP6483609B2 (ja) 2019-03-13

Family

ID=51933144

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015517999A Active JP6483609B2 (ja) 2013-05-23 2013-05-23 マルチcpuシステム

Country Status (4)

Country Link
US (1) US9996400B2 (ja)
JP (1) JP6483609B2 (ja)
CN (1) CN105247486B (ja)
WO (1) WO2014188561A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102205836B1 (ko) * 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
JP6428309B2 (ja) * 2015-01-27 2018-11-28 富士通株式会社 演算処理システムおよび演算処理システムの制御方法
US10031574B2 (en) * 2015-05-20 2018-07-24 Mediatek Inc. Apparatus and method for controlling multi-core processor of computing system
CN106095567B (zh) * 2016-05-31 2019-08-30 Oppo广东移动通信有限公司 一种安装任务的分配方法及移动终端
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11281706B2 (en) * 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US10282226B2 (en) 2016-12-20 2019-05-07 Vmware, Inc. Optimizing host CPU usage based on virtual machine guest OS power and performance management
JP6825449B2 (ja) * 2017-03-29 2021-02-03 富士通株式会社 情報処理装置,試験プログラムおよび試験方法
CN108958449B (zh) * 2017-05-26 2023-07-07 中兴通讯股份有限公司 一种cpu功耗调整方法与装置
US10884811B2 (en) 2017-06-04 2021-01-05 Apple Inc. Scheduler for AMP architecture with closed loop performance controller using static and dynamic thread grouping
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
JP6992515B2 (ja) * 2018-01-05 2022-01-13 コニカミノルタ株式会社 Gpu割当プログラム、gpu割当方法、コンピュータ読取可能な記録媒体、および、gpu割当装置
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
CN109960395B (zh) * 2018-10-15 2021-06-08 华为技术有限公司 资源调度方法和计算机设备
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0659906A (ja) * 1992-08-10 1994-03-04 Hitachi Ltd 並列計算機の実行制御方法
JPH09138716A (ja) * 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
JP2004280378A (ja) 2003-03-14 2004-10-07 Handotai Rikougaku Kenkyu Center:Kk 半導体装置
JP2005085164A (ja) 2003-09-10 2005-03-31 Sharp Corp マルチプロセッサシステムの制御方法およびマルチプロセッサシステム
JP2007213286A (ja) * 2006-02-09 2007-08-23 Hitachi Ltd システム装置
WO2008073597A1 (en) * 2006-12-14 2008-06-19 Intel Corporation Method and apparatus of power management of processor
JP5079342B2 (ja) * 2007-01-22 2012-11-21 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
JP2009230220A (ja) * 2008-03-19 2009-10-08 Fuji Xerox Co Ltd 情報処理装置、及び画像処理装置
JP2010231329A (ja) * 2009-03-26 2010-10-14 Fuji Xerox Co Ltd 情報処理装置、画像処理装置、画像出力装置、画像出力システム、プログラム
JP2011209846A (ja) 2010-03-29 2011-10-20 Panasonic Corp マルチプロセッサシステムとそのタスク割り当て方法
GB2491666A (en) * 2011-06-08 2012-12-12 Inst Information Industry Green computing heterogeneous computer system
US8707314B2 (en) * 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
WO2013162589A1 (en) * 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US8984200B2 (en) * 2012-08-21 2015-03-17 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US10073779B2 (en) * 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
KR102082859B1 (ko) * 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US9218198B2 (en) * 2013-03-13 2015-12-22 Oracle America, Inc. Method and system for specifying the layout of computer system resources

Also Published As

Publication number Publication date
JPWO2014188561A1 (ja) 2017-02-23
WO2014188561A1 (ja) 2014-11-27
CN105247486A (zh) 2016-01-13
CN105247486B (zh) 2019-05-21
US9996400B2 (en) 2018-06-12
US20160085596A1 (en) 2016-03-24

Similar Documents

Publication Publication Date Title
JP6483609B2 (ja) マルチcpuシステム
JP5075274B2 (ja) 電力認識スレッドスケジューリングおよびプロセッサーの動的使用
EP2674863B1 (en) Multi-cluster processing system and method of operating the same
JP5433837B2 (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
JP4413924B2 (ja) マルチコアプロセッサのパフォーマンス改善のための方法、システムおよび装置
JP6246603B2 (ja) タスクスケジューラ機構、オペレーティングシステム及びマルチプロセッサシステム
TWI569202B (zh) 用於基於網路負載來調整處理器電力使用之設備及方法
US10031574B2 (en) Apparatus and method for controlling multi-core processor of computing system
US9201490B2 (en) Power management for a computer system
JP2006344162A (ja) 並列計算装置
CN107743608B (zh) 至硬件加速器的动态功率路由
US10768684B2 (en) Reducing power by vacating subsets of CPUs and memory
JP6071647B2 (ja) 情報処理装置、動作状態制御方法及びプログラム
US20160170474A1 (en) Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
KR102333391B1 (ko) 전자 장치 및 이의 전력 제어 방법
JP2008262451A (ja) メモリ電源管理装置及びメモリ電源管理方法
KR101433030B1 (ko) 가상환경 내 중앙처리장치의 전력 스케줄링 방법 및 시스템
JP5768586B2 (ja) 計算装置、計算装置の制御方法、及びプログラム
CN117271058A (zh) 容器资源调度方法、装置及存储介质

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161102

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180312

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180320

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20180525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190214

R150 Certificate of patent or registration of utility model

Ref document number: 6483609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150