JP2017021513A - マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム - Google Patents

マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム Download PDF

Info

Publication number
JP2017021513A
JP2017021513A JP2015137665A JP2015137665A JP2017021513A JP 2017021513 A JP2017021513 A JP 2017021513A JP 2015137665 A JP2015137665 A JP 2015137665A JP 2015137665 A JP2015137665 A JP 2015137665A JP 2017021513 A JP2017021513 A JP 2017021513A
Authority
JP
Japan
Prior art keywords
core
synchronization
processor
cores
frequency
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.)
Pending
Application number
JP2015137665A
Other languages
English (en)
Inventor
幸仁 川邊
Yukihito Kawabe
幸仁 川邊
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
Priority to JP2015137665A priority Critical patent/JP2017021513A/ja
Publication of JP2017021513A publication Critical patent/JP2017021513A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Power Sources (AREA)

Abstract

【課題】並列処理のバリア同期における処理時間のばらつきによる性能劣化を軽減することができるマルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラムの提供を図る。【解決手段】複数のプロセッサコア10,CR1〜CRnと、前記プロセッサコア間におけるバリア同期を制御するバリア同期制御部50と、を有するマルチコアプロセッサであって、それぞれの前記プロセッサコアは、自身のクロック周波数を制御する周波数制御部11と、前記周波数制御部の出力に基づいて、自身のクロック周波数を調整する周波数調整回路12と、を含み、前記周波数制御部は、コア数Nacおよび処理コア数Npcを受け取って、ターゲット周波数F'を出力する。【選択図】図4

Description

本明細書で言及する実施例は、マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラムに関する。
近年のマイクロプロセッサは、テクノロジの微細化に伴う素子密度の向上により、半導体集積回路(LSI,チップ)の回路規模が増大する傾向にある。また、マルチコアプロセッサでは、コア数が増加し、例えば、メニーコアプロセッサと呼ばれる10コアを超えるようなマルチコアプロセッサも出現している。
その一方、素子密度の増加による電力密度の上昇により、LSI(マルチコアプロセッサ)の消費電力が大きな問題になってきている。この消費電力の問題により、例えば、LSIに実装した全ての機能を同時に動作させるのが困難になり、或いは、LSIの全機能を、そのLSIの最高周波数で動作させるのが困難になるといった事態が生じている。
そのため、チップ(LSI)内に消費電力の変動と相関の高い複数の信号のアクティビティカウンタを埋め込み、そのカウント値に電力変換のための重み係数を掛けて積和演算することで、オンチップで消費電力の見積りを行う電力モニタ技術が提案されている。
また、上述した電力モニタで得られた消費電力の見積り値を用いて、予め設定された消費電力上限(電力制約)を超えないようにLSIを動作させる制御等が、様々なマイクロプロセッサ製品に実装されてきている。
このような電力制約下での制御の一例として、例えば、インテル(登録商標)社により、ターボブースト(Turbo Boost)と呼ばれているような周波数ブースト技術が提案されている。
この周波数ブースト技術は、例えば、消費電力の小さい処理を実行している場合、或いは、マルチコアプロセッサで多数のコアが休止している場合(待ち状態)といった消費電力に余裕があるとき、その消費電力の余裕を検知する。
そして、周波数ブースト技術は、検知した消費電力の余裕に基づいて、クロック周波数を定格周波数よりもブースト(上昇)させることで性能向上を図る手法である。なお、本明細書では、消費電力制約下で動作する複数のコアを有する(多コアの)マルチコアプロセッサによる並列計算処理を考える。
並列計算システムにおいて、並列処理される複数のプロセス(処理)間の同期をとる方法として、バリア同期が知られている。このバリア同期では、例えば、プログラム中に、並列処理される複数のプロセスで同期を取るポイント(バリアポイント)が設定される。
バリア同期を行うプロセスは、処理がバリアポイントに到着した際に、バリア同期対象の他のプロセスがバリアポイントに到達するまで処理を停止し、バリア同期対象の全てのプロセスがバリアポイントに到着した時点で、バリアポイントの後続処理を開始する。そのため、例えば、処理のばらつきによる待ち時間の問題が存在する。
ところで、従来、バリア同期を適用したマルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラムとしては、様々な提案がなされている。
特開2009−069921号公報 国際公開第2008/155806号
上述したように、並列計算システムにおいて、並列処理される複数のプロセス間の同期をとる方法として、バリア同期が知られている。また、複数のコアを有するマルチコアプロセッサに対して、周波数ブースト技術を適用することにより、処理のばらつきによる待ち時間を軽減することも提案されている。
すなわち、同期待ちに入ったコアの消費電力が下がることにより、電力に余裕が生じると、例えば、その電力を利用して処理中のコアの周波数を上昇させる。これにより、コアの処理速度を向上させ、待ち時間の低減を図ることが可能になる。ここで、同期待ちに入ったコアの数が多いほど、処理中のコアの周波数を上昇させることができる。
しかしながら、周波数ブースト技術は、例えば、電力モニタによる消費電力測定値の変動を起点とした制御になるため、コアが同期待ちに入り、或いは、同期待ちが解除されてから実際に制御を行うまで、所定の時間が掛かるという課題がある。
また、チップ全体の周波数ブースト技術は、同期グループを意識した制御ではないため、ユーザ単位や並列ジョブ単位の消費電力制約の設定、或いは、処理時間による課金等の計算機運用には向いていないといった課題もある。
一実施形態によれば、複数のプロセッサコアと、前記プロセッサコア間におけるバリア同期を制御するバリア同期制御部と、を有するマルチコアプロセッサが提供される。
それぞれの前記プロセッサコアは、自身のクロック周波数を制御する周波数制御部と、前記周波数制御部の出力に基づいて、自身のクロック周波数を調整する周波数調整回路と、を含む。前記周波数制御部は、コア数および処理コア数を受け取って、ターゲット周波数を出力する。
開示のマルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラムは、並列処理のバリア同期における処理時間のばらつきによる性能劣化を軽減することができるという効果を奏する。
図1は、マルチコアプロセサにおけるコア間の同期と並列処理のばらつきを説明するための図である。 図2は、マルチコアプロセッサの一例を示すブロック図である。 図3は、マルチコアプロセッサの他の例を示すブロック図である。 図4は、本実施形態に係るマルチコアプロセッサを示すブロック図である。 図5は、図4に示すマルチコアプロセッサにおけるバリア同期制御部の一構成例を示すブロック図である。 図6は、マルチコアプロセッサの第1実施例における各コアの周波数制御を説明するためのブロック図である。 図7は、マルチコアプロセッサの第2実施例における各コアの周波数制御を説明するためのブロック図である。 図8は、マルチコアプロセッサの第3実施例における各コアの周波数制御を説明するためのブロック図である。 図9は、図8に示す周波数制御部における電力モニタ部の一例を示すブロック図である。 図10は、マルチコアプロセッサの第4実施例におけるクロック制御処理の一例を説明するためのフローチャートである。 図11は、本実施例をSMTコアに適用した場合におけるバリア同期制御部の一構成例を示すブロック図である。コア数および処理コア数生成回路の一例を示す図である。 図12は、本実施例のマルチコアプロセッサによる効果を説明するための図(その1)である。 図13は、本実施例のマルチコアプロセッサによる効果を説明するための図(その2)である。
まず、本実施例のマルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラムの実施例を詳述する前に、図1〜図3を参照して、マルチコアプロセッサおよびそのクロック制御方法の例、並びに、その問題点を説明する。なお、以下の記載では、消費電力制約下で動作する複数のコア(プロセッサコア)を有するマルチコアプロセッサによる並列計算処理を想定して説明する。
図1は、マルチコアプロセサにおけるコア間の同期と並列処理のばらつきを説明するための図であり、N個のコアCR1〜CRn(コア1〜コアN)によりバリア同期を適用して、並列処理を行う様子を示すものである。
図1に示されるように、例えば、並列処理される複数のプロセス(処理)間の同期をとるバリア同期では、プログラム中に並列処理される複数のプロセスで同期を取るポイント(バリアポイント)BP0が設定される。
バリア同期を行うプロセスは、処理がバリアポイントに到着した際に、バリア同期対象の他のプロセスがバリアポイントに到達するまで処理を停止し、バリア同期対象の全てのプロセスがバリアポイントに到着した時点で、バリアポイントの後続処理を開始する。
すなわち、バリア同期を行なうプロセスは、例えば、バリア同期対象の全てのコアCR1〜CRnによる処理AがバリアポイントBP0に到着した時点で、バリアポイントBP0の後続処理Bを開始する。
ここで、バリア同期対象の全てのコアCR1〜CRnにおいて、処理Aの実行に最も時間を要したコアCRnがバリアポイントBP0に到着するまで、既に処理を完了したコアCR1〜CRn-1は、処理を停止して同期待ちになる。
そして、CRnがBP0に到着した時点で、CR1〜CRnによる処理Bの実行が開始され、さらに、次のバリアポインでも同様のバリア同期処理が行われることになる。そのため、例えば、各コアCR1〜CRnにおける処理のばらつきによる待ち時間の問題が存在する。
図2は、マルチコアプロセッサの一例を示すブロック図であり、バリア同期の制御として、マルチコアプロセッサにおける同一CPU内のコア間のバリア同期処理をハードウェア制御するようにしたものである。
図2に示されるように、マルチコアプロセッサは、複数(例えば、N個)のコア(プロセッサコア)CR1〜CRn(100)、および、バリア同期制御部300を含む。各コア100(CR1〜CRn)は、それぞれ同期処理部101,電力モニタ部102およびコア電力制約(コア電力上限値の情報)103を含む。また、バリア同期制御部300は、バリア状態レジスタ310、および、複数(例えば,k個)の同期グループ制御回路301〜30kを含む。
第1同期グループ制御回路301は、第1グループ定義レジスタ311および第1グループ制御部312を含み、第2同期グループ制御回路302は、第2グループ定義レジスタ321および第2グループ制御部322を含む。さらに、第k同期グループ制御回路30kは、第kグループ定義レジスタ3k1および第kグループ制御部3k2を含む。
すなわち、図2に示す例では、各ビットがそれぞれコアCR1〜CRnの状態を示すバリア状態レジスタ310と、同期するコアのグループ毎にその同期グループ1〜kのバリア同期制御を行う同期グループ制御回路301〜30kを含む。
バリア状態レジスタ310には、各コアCR1〜CRnからそのコアの同期状態(『処理中(動作中)』または『同期待ち(停止中)』)を示す1ビットの同期状態信号SS1〜SSnが伝えられ、バリア状態レジスタ310の対応するビットに書き込まれる。
ここで、コアCR1〜CRnから出力される同期状態信号SS1〜SSnは、例えば、それぞれのコアCR1〜CRnによる処理がバリアポイント(BP0)を超える(跨ぐ)毎に、例えば、『0』→『1』→『0』→『1』→…というように反転する信号である。
各同期グループ制御回路301〜30kは、それぞれ自身のグループに属するコアの情報を保持するグループ定義レジスタ311〜3k1を含む。なお、各グループ定義レジスタ311〜3k1は、コアCR1〜CRnのIDに対応するビット数を含む多ビットのレジスタであり、例えば、その同期グループ1〜kに含まれるコアに対応するビット位置に『1』が設定され、それ以外のビット位置に『0』が設定される。
また、各同期グループ制御回路301〜30kは、同期グループを定義するコア数分のビットの他に同期制御用に1ビットのレジスタBLTを含む。この同期制御用レジスタBLTには、例えば、実行中のコアのバリア状態と逆の値が常時格納され、バリア同期の制御に用いられる。
すなわち、同じ同期グループに属するコアは、全コア処理中の状態ではそのコアの同期状態信号として同じ値を出力しており、各コアは、同期ポイント(バリアポイント)に到達すると、同期状態信号(SS1〜SSn)の値を反転して同期待ちに入る。
バリア同期制御部300は、各コアCR1〜CRnに対して、グループ選択のためのセレクタ320を経由して同期待ちの解除を通知する1ビットの信号Sr1〜Srnを出力する。そして、同期待ち状態のコアは、この信号Sr1〜Srnの値が反転したらバリアポイントの後続の処理を実行する。
なお、同期制御としては、各同期グループ制御回路301〜30kにおいて、例えば、以下のような処理が行われるが、ここでは、第1同期グループ制御回路301を例として説明する。
まず、第1グループ定義レジスタ311により、全てのコアCR1〜CRnのバリア状態のうち自グループ(自身の第1グループ)のコアの同期状態を抽出する(ステップST1)。さらに、自グループの全てのコアの同期状態がそのグループの同期制御用ビットBLTと同じになるまで、すなわち、全コアが同期待ち状態になるまで待つ(ステップST2)。
そして、自グループの全てのコアの同期状態が同期制御用ビットBLTと同じ値になったら、自グループのコアへの同期待ち解除通知信号(Sr1〜Srn)を反転し、同時に同期制御用ビット(BLT)の値を反転する(ステップST3)。
すなわち、制御部(第1グループ制御部)312は、グループ(第1グループ)内のコアが全て『0』ならば『0』とし、全て『1』ならば『1』とし、その『0』および『1』を反転(『1』および『0』)して同期制御用ビットBLTを書き換える。さらに、セレクタ320を経由して、自グループ(第1グループ)のコアに対して、同期待ち解除通知信号Sr1〜Srnを反転して通知する。
そして、再び、ステップST1に戻り、第1グループ定義レジスタ311により、全コアCR1〜CRnのバリア状態のうち自グループのコアの同期状態を抽出して、同様の処理を繰り返す。
ここで、ステップST2およびST3の処理は、例えば、全ての入力が『1』の時に出力が『1』になり、全ての入力が『0』の時に出力が『0』になるC素子と呼ばれる順序回路を、第1グループ制御部(312)に適用することで実現できる。
このように、マルチコアプロセッサのバリア同期制御(閉じたバリア同期制御)は、バリア状態レジスタ310と、第1〜第k同期グループ毎のグループ定義レジスタ311〜3k1を適用することにより、実装可能なことが分かる。
しかしながら、上述したバリア同期制御を適用したマルチコアプロセッサでは、例えば、並列処理の同期化における性能劣化が生じることになる。この性能劣化の要因としては、例えば、同期化を行うための通信や同期判定といったいわゆるフロー制御の時間や、図1を参照して説明した同期待ち状態によるものが考えられる。
すなわち、プロセス間の共有資源アクセスの競合や一部のコアでOSプロセスが実行されるといったコア間における処理時間のバラつきにより、一番処理が遅いコアが同期ポイントに到達するまで残りのコアの処理が無駄に止まることによる性能劣化等がある。
また、図2を参照して説明したマルチコアプロセッサは、バリア同期処理をハードウェア処理することでフロー制御の処理時間を軽減することは可能であるが、マルチコアプロセッサ本来の性能を十分に発揮させることは困難である。
図3は、マルチコアプロセッサの他の例を示すブロック図であり、周波数ブースト技術を適用したものである。図3に示されるように、マルチコアプロセッサは、複数のコアCR1〜CRn(200)、電力管理部210、共有キャッシュ401、CPU間I/F(インターフェース)402、および、ローカルメモリ403を含む。
各コア200(CR1〜CRn)は、周波数制御部201,PLL(Phase Locked Loop:位相同期回路)202,電力モニタ部203およびコア電力制約(コア電力上限値の情報)204を含む。共有キャッシュ401は、電力モニタ部411を含み、この電力モニタ部411により、共有キャッシュ401と、CPU間I/F402およびローカルメモリ403間の情報に基づいた電力をモニタし、電力管理部210に伝えるようになっている。
電力管理部210は、共有キャッシュ401の電力モニタ部411からの電力情報と共に、各コア200の電力モニタ部203からの電力情報を受け取り、チップ全体の電力(チップ電力合計211)を計算し、チップ電力制約212と比較して電力余裕度を算出する。
電力管理部210で算出された電力余裕度は、各コア200のコア電力制約204に伝えられ、それぞれのコア200では、電力余裕度に基づいてコア電力制約(コア電力上限値の情報)を修正し、その修正されたコア電力制約に基づいた制御が行われる。すなわち、それぞれのコアCR1〜CRnにおいて、周波数制御部201は、修正されたコア電力制約204に基づき、PLL202を介してコア周波数のブースト制御を行う。
すなわち、電力管理部210は、例えば、チップ(マルチコアプロセッサ)が消費電力の小さい処理を実行している場合、或いは、多数のコアが停止(休止:同期待ち)している場合といった消費電力に余裕があるとき、その消費電力の余裕(電力余裕度)を検知する。
そして、それぞれのコアCR1〜CRnの周波数制御部201は、検知した消費電力の余裕(修正されたコア電力制約204)に基づき、クロック周波数を定格周波数よりもブーストすることでマルチコアプロセッサの性能を向上させる。
しかしながら、図3に示すマルチコアプロセッサは、例えば、電力モニタ部による消費電力測定値の変動に基づいた制御を行うため、コアが同期待ちに入り、或いは、同期待ちが解除されてからクロック周波数が変更されるまでに所定の時間を要する。例えば、バリア同期通知信号の変更からアクティビティが変更するまでの時間、或いは、アクティビティ情報をサンプリングする期間に所定の時間を要することになる。
さらに、例えば、各コアの電力値や電力値の元になるアクティビティ情報を集計して、チップ電力や電力余裕度を計算する時間のオーバーヘッド等が生じる。そのため、制御のオン/オフの切り替え、或いは、クロック周波数の変更に時間が掛かり、マルチコアプロセッサの性能劣化を招く虞がある。
また、チップ全体の周波数ブースト技術は、同期グループを意識した制御ではないため、特定の同期グループのコアが同期待ちに入ることで生じた電力余裕度が、別の同期グループのコアの周波数ブーストに使われる可能性が出てくる。そのため、ユーザ単位や並列ジョブ単位の消費電力制約の設定や処理時間による課金等の計算機運用には向いていないことになる。
以下、マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラムの実施例を、添付図面を参照して詳述する。図4は、本実施形態に係るマルチコアプロセッサを示すブロック図であり、各コアのクロック周波数制御を行うシステムを示すものである。
図4に示されるように、本実施形態のマルチコアプロセッサは、複数(例えば、N個)のプロセッサコアCR1〜CRn(コア10)、および、バリア同期制御部50を含む。各コア10(CR1〜CRn)は、それぞれ周波数制御部11,PLL12,コア電力値13,コア電力上限値(コアの電力制約の情報)14および同期待ちコア電力値(コアが同期待ちしているときの電力情報)15を含む。
ここで、本実施形態のマルチコアプロセッサでは、バリア同期制御部50から各コア10に対して、それぞれコア数Nacおよび処理コア数Npcが出力される。なお、コア数Nacは、自身のコア(自コア)が属する同期グループに含まれるコアの数(全コア数)の情報を示し、処理コア数Npcは、自コアと同じ同期グループのコアのうち、現在、同期待ち状態ではなく、動作中(処理中)のコアの数の情報を示す。
すなわち、各コア10(CR1〜CRn)コアは、そのコアに求められる電力制約である『コア電力上限値14』、事前に見積られた同期待ち時のコア電力である『同期待ちコア電力値15』、および、そのコアの現在の電力値を示す『コア電力値13』を含む。
さらに、各コア10は、回路として、PLL12等の『周波数調整回路』、並びに、上述の各情報に基づいて、そのコアの電力がコア電力上限値14を超えないようにPLL12等の周波数を適切に制御する『周波数制御部11』を含む。
ここで、コア電力値(コアの電力情報)13、コア電力上限値(コアの電力制約の情報)14および同期待ちコア電力値(同期待ちコアの電力情報)15は、消費電力のうちクロック周波数と連動する動的電力の部分を表すものとする。
ここで、コア電力上限値14および同期待ちコア電力値15は、例えば、事前に外部から与えることができる。また、これらの値は、例えば、マルチコアプロセッサ全体で1つの値を記録(設定)し、その値を各コアに入力してもよいが、コア毎に値を格納するレジスタを設け、各コアで別の値を用いるようにしてもよい。
なお、コア電力値13は、例えば、処理中のコアの電力を表す代表値であり、定格周波数での消費電力仕様値等を固定値として与えてもよく、或いは、電力モニタ部等を搭載して実際の電力を取得してもよい。
図5は、図4に示すマルチコアプロセッサにおけるバリア同期制御部の一構成例を示すブロック図であり、k個の同期グループによるバリア同期制御を想定したものである。図5に示されるように、バリア同期制御部50は、バリア状態レジスタ51,複数(N個)のEXNOR(EXclusive-NOR:否定排他的論理和)ゲート52,セレクタ回路53および第1〜第k同期グループマスク回路501〜50kを含む。
第1〜第k同期グループマスク回路501〜50kは、同様の構成とされ、以下では、第1同期グループマスク回路501を例として説明する。第1同期グループマスク回路501は、グループ定義レジスタ511,複数(N個)のAND(論理積)ゲート512,第1カウンタ513および第2カウンタ514を含む。
バリア状態レジスタ51には、図2を参照して説明したバリア状態レジスタ310と同様に、各コアCR1〜CRnからそのコアの同期状態(『処理中』,『同期待ち』)を示す1ビットの同期状態信号(SS1〜SSn)が格納されている。
なお、バリア状態レジスタ51に格納される各コアCR1〜CRnの同期状態を示す信号は、例えば、それぞれのコアCR1〜CRnによる処理がバリアポイントを跨ぐ毎に、例えば、『0』→『1』→『0』→『1』→…というように反転する。
グループ定義レジスタ511は、コアCR1〜CRnのIDに対応するビット数を含む多ビットのレジスタであり、その同期グループ1に含まれるコアに対応するビット位置に『1』が設定され、それ以外のビット位置に『0』が設定される。また、グループ定義レジスタ511は、同期グループを定義するコア数分のビットの他に同期制御用に1ビットのレジスタBLTを含む。
各EXNORゲート52は、バリア状態レジスタ51に格納された各ビット信号と、グループ定義レジスタ511の同期制御用レジスタBLTの信号の否定排他的論理和を取り、そのEXNORゲート52の出力信号は、対応するANDゲート512の一方の入力に与えられる。例えば、処理中(動作中)のコアに対応するEXNORゲート52の出力信号は『1』になり、待機中のコアに対応するEXNORゲート52の出力信号は『0』になる。
グループ定義レジスタ511に格納された各ビット信号は、ANDゲート512の他方の入力に与えられると共に、第1カウンタ513に入力される。すなわち、各ANDゲート512は、グループ定義レジスタ511に格納された各ビット信号と、対応するEXNORゲート52の出力信号の論理積を取り、そのANDゲート512の出力信号は、第2カウンタ514に入力される。
ここで、第1カウンタ513からは、第1同期グループ(同期グループ1)に含まれるコア数(全コア数,メンバ数)N1acが出力され、第2カウンタ514からは、第1同期グループで現に処理を行っている処理コア数(動作コア数)N1pcが出力される。
また、第2同期グループマスク回路502からは、第2同期グループ(同期グループ2)に含まれるコア数N2acおよび第2同期グループで現に処理を行っている処理コア数N2pcが出力される。
さらに、第k同期グループマスク回路50kからは、第k同期グループ(同期グループk)に含まれるコア数Nkacおよび第k同期グループで現に処理を行っている処理コア数Nkpcが出力される。
そして、第1〜第k同期グループマスク回路501〜50kから各同期グループにおけるコア数N1ac〜Nkacおよび処理コア数N1pc〜Nkpcは、セレクタ回路53に入力され、それぞれのコアCR1〜CRnに対してコア数Nacおよび処理コア数Npcが出力される。
図6は、マルチコアプロセッサの第1実施例における各コアの周波数制御を説明するためのブロック図である。図6に示されるように、各コア10の周波数制御部11は、コア電力値(コアの電力情報)13,コア電力上限値(コアの電力制約の情報)14,同期待ちコア電力値(同期待ちコアの電力情報)15および現クロック周波数(現クロック周波数の情報)16を受け取る。
ここで、コア電力上限値14は、例えば、事前に外部から与えられ、それぞれ各コア10のレジスタ(第1レジスタ)140に格納され、同期待ちコア電力値15は、例えば、事前に外部から与えられ、それぞれ各コア10のレジスタ(第2レジスタ)150に格納される。
すなわち、コア電力上限値14は、第1レジスタ140に設定され、同期待ちコア電力値15は、第2レジスタ150に設定される。なお、これらコア電力上限値14および同期待ちコア電力値15は、コア10毎に設定せずに、マルチコアプロセッサ全体で設定することもできる。
また、現クロック周波数16は、自コアにおける現状の動作クロックの周波数であり、この情報は、それぞれのコアにおいて取得可能なのはいうまでもない。さらに、図4を参照して説明したように、処理コア数Npcおよびコア数Nacは、バリア同期制御部50から与えられる。
そして、周波数制御部11は、上述した情報に基づいて、自コアが属する同期グループにおける「コア数Nac」および「処理コア数Npc」の比に従って、待機コアの電力余裕分に応じた周波数上昇の制御を、処理中の各コア自身が自律的に行う。
すなわち、バリア同期制御部50から通知されるコア数(Nac)をN,処理コア数(Npc)をM,現在のコア消費電力(コア電力値13)をPcr,そして,コア電力上限値14をPltとする。さらに、同期待ちコア電力値15をPwt,現クロック周波数をF,そして,本制御によるターゲット周波数をF'とする。
このとき、ターゲット周波数(補正後のクロック周波数)F'は、周波数制御部11により、fを所定の関数として、
F'=f(F,M,N,Pcr,Pwt,Plt)
により求めることができる。
なお、PltおよびPwtは、予め外部から与えられているものとし、Pwtは、全てのコアCR1〜CRnで共通とし、そして、Pltは、同じ同期グループにおいては、同一の値が設定されるものとする。
また、並列処理において、同じ同期グループ内の処理コアは、ほぼ同じ処理を行っていると考えられるため、全処理コアの電力は、同じであると仮定する。このとき、同期グループ内の同期待ちコア電力全体は(N−M)×Pwt、処理コア電力全体はM×Pcr、同期グループ全体の電力制約はN×Pltになる。
従って、ターゲット周波数F'は、次の式(1)を満たす範囲でブースト可能になる。
(N−M)×Pwt+M×Pcr×F'/F ≦ N×Plt (1)
上記式(1)を解くと、
F' ≦ F×{N/M×(Plt−Pwt)+Pwt}/Pcr
になる。
そこで、次の式(2)により求めたF'を用いて、動作中(同期待ちになっておらず、処理を実行中)の処理コアのクロック周波数を制御する。
F'=F×{N/M×(Plt−Pwt)+Pwt}/Pcr (2)
すなわち、動作中の処理コアでは、周波数制御部11が、式(2)により求めたF'をターゲット周波数としてクロック周波数の制御を行うことで、同期グループ全体の消費電力制約を超えることなく、処理コアの周波数をブーストさせて処理を行うことができる。なお、実際には、例えば、PLL12等で設定可能な複数の離散的な周波数の中から、F'を超えない範囲で最大の値を選択して、クロック周波数の設定を行うことになる。
ここで、式(2)から分かるように、全コア(コア数N)中の処理コア(処理コア数M)の比M/Nが小さくなるほど,すなわち、N/Mが大きくなるほど、F'は大きくなり、また、同期待ちコア電力値Pwtが小さいほど、F'は大きくなる。
また、同期待ち状態が解除されると、M=Nになるため、式(2)は、次の式(2')のよう表すことができる。
F'=F×(Plt/Pcr) (2')
従って、コア毎にPcr≦Pltを満たす範囲で、周波数ブーストが行われることになる。なお、同期待ち状態が解除されたとき、そのままF'を使い続けてもよいが、並列処理するコア間で独立に周波数がばらつくのを避けたい場合、例えば、M=Nの時は、規定の周波数Fwで動作させ、M<Nの時だけ式(2)で求めたF'を使用することもできる。
図6(図7および図8も同様)では、周波数制御部11の出力部にセレクタ110を設け、自コアの状態が、同期待ち状態と処理中でターゲット周波数を切り替えるようになっている。すなわち、自コアの状態が、処理中(『0』)のときは、F'をターゲット周波数としてPLL12に出力し、同期待ち(『1』)のときは、規定のバリア同期待ち時周波数Fwをターゲット周波数としてPLL12に出力するようになっている。
このように、本実施形態のマルチコアプロセッサは、同期待ちコアの増減により処理中のコアの周波数を上昇・下降させる制御において、バリア同期制御部50におけるバリア状態の変化から非常に短いレイテンシでコアの周波数を変更することができる。
すなわち、本実施形態によれば、例えば、バリア状態の変化の後にチップ消費電力の変化を検出する周波数ブースト制御と比べて、バリア状態の変化からコアの周波数を変更するまでの処理を高速に行うことが可能である。
さらに、本実施形態によれば、あるコアが同期待ち状態になることで生じる電力の余裕は、同じ同期グループのコアの周波数の上昇(ブースト)に使用されるため、同期グループ間の消費電力の独立性を保持することができる。
すなわち、本実施形態は、例えば、ユーザ単位や並列ジョブ単位の消費電力制約の設定、或いは、処理時間による課金等の計算機運用に適したものということができる。なお、上述した本実施形態の効果は、第1実施例に限定されるものではなく、以下に説明する第2〜第4実施例でも同様に発揮されるのはいうまでもない。
図7は、マルチコアプロセッサの第2実施例における各コアの周波数制御を説明するためのブロック図である。図7と、上述した図6の比較から明らかなように、本第2実施例では、コア電力値算出部17の出力を、周波数制御部11のコア電力値Pcrとして与えるようになっている。
ここで、動作周波数のうち、全コアで任意のプログラム実行時に消費電力が動作保障上限を超えないことが設計上保障されている基準周波数を定格周波数と呼び、性能向上のために定格周波数よりも高い周波数で動作させる場合の周波数をブースト周波数と呼ぶ。
本第2実施例では、固定のコア電力値13をレジスタ(第3レジスタ)130に格納し、定格周波数18をレジスタ(第4レジスタ)180に格納する。コア電力値算出部17は、レジスタ130に格納された固定のコア電力値13、レジスタ180に格納された定格周波数18および現クロック周波数16を受け取り、コア電力値を補正(補正されたコア電力値(Pcr)を算出)して周波数制御部11に出力する。
すなわち、コア電力値算出部17により算出されたコア電力値(Pcr)は、周波数制御部11に入力され、例えば、前述した式(2)に基づいたターゲット周波数F'の計算に使用される。
なお、レジスタ130に格納する固定のコア電力値13としては、例えば、定格周波数でのコアの最大電力仕様値、または、実行するプログラムの定格周波数における電力上限値(消費電力がこの値を超えないことを保証できる値)を使用することができる。
ここで、例えば、コアの固定消費電力値をPcr-fixとし、Pcr-fixから求められるターゲット周波数をF-fixとすると、式(2)より、Pcr<Pcr-fixであれば、F'>F-fixになるので、同期グループ全体の消費電力がN×Pltを超えないことが保証される。本第2実施例では、コア電力を固定値として扱うため、周波数ブーストの効果は小さくなるが、回路規模を低減することが可能になる。
図8は、マルチコアプロセッサの第3実施例における各コアの周波数制御を説明するためのブロック図である。図8と、前述した図6の比較から明らかなように、本第3実施例では、電力モニタ部19の出力を、周波数制御部11のコア電力値Pcrとして与えるようになっている。
ここで、電力モニタ部19には、コア内の電力計算用のイベントカウンタの値が入力され、それに基づいて、動的なコア電力値をモニタし、周波数制御部11のコア電力値Pcrとして与えるようになっている。
図9は、図8に示す周波数制御部における電力モニタ部の一例を示すブロック図である。図9に示されるように、電力モニタ部19は、例えば、複数(i個)の乗算器191〜19iと、加算器190を含む。
各乗算器191〜19iは、それぞれ対応する動作率情報r1〜riと、電力算出用の係数c1〜ciを乗算する。乗算器191〜19iの出力は、加算器190により加算され、その加算結果に基づいて、各コアの動的なコア電力値が算出(モニタ)される。
ここで、動作率情報r1〜riとしては、電力変動と相関の高い信号の動作率、例えば、演算器,命令フェッチおよびキャッシュアクセスの回数を一定期間カウンタでカウントしたもの等を利用することができる。
なお、カウンタは、例えば、カウントをコアクロック同期で行い、カウンタ値のサンプリングをコアクロックとは独立した固定クロックで行うことにより、コアクロックの調整を反映した電力見積り値(動作率情報)を取得することができる。
電力モニタ部19は、図9に示すようなイベントカウンタベースの電力モニタ回路に限定されるものではなく、知られている様々な構成のものを適用することができるのはいうまでもない。
このように、第3実施例によれば、動的な電力値(Pcr)を周波数制御部11の入力として用いることにより、より一層精度の高いコアのブースト周波数制御が可能になる。なお、電力モニタ部19は、同期待ち状態と処理状態の遷移に伴うコアの電力変動を検知するのに使用するのではなく、処理中のコアの電力計算に用いている。
すなわち、本第3実施例において、同期待ちコア数(処理コア数M)が変化した場合は、その変化時点で算出されているコアの電力情報を用いてコアの周波数が計算される。そのため、イベントカウンタのサンプル時間や消費電力の計算時間は、この周波数制御の制御遅延には含まれないことになる。
以上において、例えば、同期待ち状態のコアをより消費電力が低い状態に遷移させ、それにより生じた追加の電力余裕により、処理中のコアのブースト周波数をさらに上げることもできる。この同期待ち状態のコアをより消費電力が低い状態に遷移させるのは、前述した式(2)において、N>Mの時にPwtが減少すると、F'が増加することに対応する。
なお、同期待ち状態のコアの消費電力を低減する手法としては、例えば、クロック周波数を下げる、或いは、クロックを停止するといったものがある。ここで、クロック周波数を下げる場合は、例えば、前述した図6〜図8の周波数制御部11の出力部に設けたセレクタ110により、同期待ち時に選択される周波数を外部から設定可能にしておき、定格周波数よりも低い周波数に設定すればよい。
また、クロックを停止する場合は、例えば、自コア状態によりコア全体のクロックのうちバリア同期I/Fのように常に動作させておく部分以外のクロックの動作/停止を制御すればよい。
さらに、同期待ち状態時のより低い電力状態への移行、或いは、図6〜図8における同期待ちコア電力値設定レジスタ150に対するより低い電力値の設定等により、同期待ちコアが増加した時に、より一層高いブースト周波数への制御も可能になる。
図10は、図10は、マルチコアプロセッサの第4実施例におけるクロック制御処理の一例を説明するためのフローチャートである。図10に示す第4実施例は、上述した各実施例において、同期待ちコアを低電力状態に移行した後、処理コア数(動作中のコア数)Mがある設定値(低電力モード解除閾値)Lより小さくなったら同期待ちコアの低電力状態を解除するというものである。
すなわち、一般的に、コアをより電力の低い休止(同期待ち)状態に移行した場合、再度処理を開始する際には、クロックの再起動やクロック周波数の復帰のような前処理を行うことになるため、性能が低下する。
そこで、本第4実施例では、同期グループ内の処理中のコアが予め設定した値以下になったら、同期(バリアポイントを通過)する前に、同期待ちコアの低電力状態を解除して、同期後の処理に要する時間を低減する。
すなわち、図10に示されるように、クロック制御処理が開始すると、すなわち、低電力モード解除閾値L,コア数Nまたは処理コア数Mの変更があったら、ステップST11において、自コアは同期待ち状態か否かを判定する。
ステップST11において、自コアは同期待ち状態ではあると判定すると、ステップST12に進み、M>Lが成立するか否かを判定する。ステップST12において、M>Lが成立する、すなわち、処理コア数(動作中のコアの数)Mが閾値Lよりも多いと判定すると、ステップST13に進んで低電力状態に移行し、ステップST14に進む。なお、低電力状態では、例えば、コアの周波数を通常の待機状態よりも低くし、或いは、クロックを停止して消費電力を低減する。
また、ステップST12において、M>Lが成立しない、すなわち、処理コア数Mが閾値L以下であると判定すると、ステップST15に進んで低電力状態を解除し、ステップST14に進む。なお、低電力状態の解除は、例えば、コアの周波数を通常の待機状態に戻し、或いは、クロックを動作させてバリアポイントに通過した後の処理を短時間で開始可能とする。
次に、ステップST11において、自コアは同期待ち状態ではない、すなわち、処理中(動作中)であると判定すると、ステップST16に進み、M>Lが成立するか否かを判定する。ステップST16において、M>Lが成立する、すなわち、処理コア数Mが閾値Lよりも多いと判定すると、ステップST18に進んで、同期待ちコア電力値設定レジスタ150に対して、低電力待機状態の電力値を設定し、ステップST14に進む。
また、ステップST16において、M>Lが成立しない、すなわち、処理コア数Mが閾値L以下であると判定すると、ステップST17に進んで、同期待ちコア電力値設定レジスタ150に対して、通常の待機状態の電力値を設定し、ステップST14に進む。なお、ステップST14では、L,M,Nの変更待ちを行い、L,M,Nのいずれかが変更されると、ステップST11に戻り、同様の処理を繰り返す。
ここで、例えば、ステップST15において、低電力状態を解除すると、それ以降、ブースト周波数は、式(2)において、同期待ちコア電力値Pwtを通常の同期待ち時電力にして計算されるため、計算上は、現在処理中のコアの周波数を低減することになる。
しかしながら、上述したように、例えば、周波数制御時の設定周波数は、式(2)のF'それ自体ではなく、F'に基づいて、コアの動作可能範囲でPLL12等による設定可能な離散的な周波数設定値の中から選択される。
そのため、例えば、処理コア数Mが非常に小さい場合、F'の計算値は大きな値になるが、実際の設定周波数は、コアの動作可能上限周波数を超えることはできない。そのため、低電力モード解除閾値Lを十分小さく設定すれば、同期待ちコアの低電力状態解除前も解除後も、計算上のF'は動作可能上限周波数を超えるため解除後も周波数は下がらない。
これにより、同期待ちコアの低電力状態を解除しても処理中のコアの周波数の低下を低く抑えることができ、前述したブースト周波数の上昇効果を得ると共に、同期後の処理再開時の復帰時間を短く抑えることが可能になる。
図11は、本実施例をSMT(同時マルチスレッディング:Simultaneous Multi-Threading)コアに適用した場合におけるバリア同期制御部の一構成例を示すブロック図である。なお、図11では、各コアCR1,CR2,CR3,…で実行される複数(4つ)のスレッドに対して、それぞれ論理プロセッサが割り当てられている場合を示す。
ところで、コアがマルチスレッド対応している場合、異なる同期グループに属する論理プロセッサが同じコアのスレッドに割り当てられた場合、コアのクロックがスレッドで共通である等によりスレッド間の電力を独立して扱うのが困難である。
しかしながら、「同じコアのスレッドには、異なる同期グループの論理プロセッサを割り当てない」という制約の下で運用することにより、上述した各実施例によるクロック周波数制御を、一部を変更することで、実質的にそのまま適用することができる。
例えば、第1同期グループマスク回路501において、図5を参照して説明したコア数(第1同期グループに含まれるコア数の情報)N1acおよび処理コア数(第1同期グループにおける処理中(動作中)のコア数の情報)N1pcは、次のように変更されることになる。
例えば、コア数N1acを、第1同期グループに含まれているスレッドが割り当てられているコアの数に置き換え、処理コア数N1pcを、第1同期グループに属するスレッドのうち処理中のスレッドが割り当てられているコアの数に置き換える。すなわち、処理コア数N1pcとして、同期待ちのスレッドのみが割り当てられたコアはカウントしないようにする。
具体的に、図11に示されるように、第1同期グループマスク回路501に対して、スレッド毎の情報をコア毎にまとめるEXNORゲート515(52),ORゲート516,ANDゲート517(512)およびNANDゲート518を設け、カウンタ513,514でカウントする。すなわち、コア数N1acは、グループ定義レジスタ511中のビットを、ORゲート516によりコア毎に論理和を取って第1カウンタ513に出力してカウントすることで算出することができる。
また、処理コア数N1pcの算出は、まず、バリア状態レジスタ51の各ビットと同期制御用レジスタBLTの値を、EXNORゲート515により否定排他的論理和を取り、コア状態が同期待ちの時に『1』になる信号を作る。
そして、グループ定義レジスタ511でマスクし、NANDゲート518により、同一コアのスレッドに対応する信号の否定論理積を取って、第2カウンタ514に出力する。これにより、コア内で対象(第1)グループのスレッドで処理中のものが1つでもあるようなコアを第2カウンタ514でカウントすることでN1pcを算出することができる。
上述した各実施例(本実施形態)によれば、チップ電力に基づいた周波数ブースト機構と比較して、以下のような効果が期待できる。まず、本実施例によれば、バリア同期待ちに入った時およびバリア同期の後続処理が再開した時の周波数の切り替え処理に要する時間を短縮することができる。
ここで、計算のために、各処理に掛かる時間を、例えば、次のように仮定する。すなわち、電力モニタ部(例えば、図3の411,203,図8の19等)でアクティビティ情報をサンプリングする間隔を100μsと仮定し、各コアCR1〜CRnとバリア同期制御部50または電力管理部200との間の情報伝送にかかる時間を片道30nsと仮定する。
また、アクティビティカウンタ値から電力を計算する時間(図8の電力モニタ部19の処理時間等),ターゲット周波数を計算する時間およびバリア同期制御部50内の処理時間を2ns(コアクロックの数サイクル程度)と仮定する。さらに、PLL(例えば、図3の202,図4の12等)で周波数を変更する時間を5μsと仮定する。
この時、あるコアが処理状態から同期待ち状態に遷移し、それに応じて(処理コア数Mの減少に基づいて)処理中の他のコアの周波数が上昇(ブースト)されるまでの時間は、例えば、図3のチップ電力による周波数ブースト方式では、次のようになる。
[(カウンタサンプル]+[コア電力計算]+[信号伝送(コア(200)→電力管理部(210))]+[チップ電力計算]+[信号伝送(電力管理部210→コア200)]+[コア周波数計算]+[PLL周波数変更] = 100μs+2ns+30ns+2ns+30ns+2ns+5μs ≒ 105.1μs
すなわち、例えば、図3を参照して説明したマルチコアプロセッサでは、処理中のコアと同期待ちのコアが混在する期間が105μs以上ないと、周波数ブーストによるばらつき低減の効果が得られないことになる。
これに対して、本実施例では、あるコアが処理状態から同期待ち状態に遷移し、それに応じて処理中の他のコアの周波数が上昇されるまでの時間は、次のようになる。
[信号伝送(コア(10)→バリア同期制御部(50))]+[バリア同期制御部内処理]+[信号伝送(バリア同期制御部→コア)]+[コア周波数計算]+[PLL周波数変更] = 30ns+2ns+30ns+2ns+5μs ≒ 5.1μs
すなわち、例えば、図4を参照して説明した本実施形態のマルチコアプロセッサでは、処理中のコアと同期待ちのコアが混在する期間が5μs程度で周波数ブーストによるばらつき低減の効果が得られることになる。これは、上述した図3をを参照して説明した場合に対して、約21倍の周波数制御速度になることが分かる。
次に、本実施例によれば、あるコアが同期待ち状態になることで生じる電力余裕は、同じ同期グループのコアの周波数ブーストに使用されることになる。すなわち、本実施例は、同期グループ間の消費電力の独立性を保つことができ、並列ジョブ単位の消費電力制約の設定や処理時間による課金等の計算機運用に適したものであるということができる。
さらに、上述した各実施例によれば、以下のような効果も期待できる。図12および図13は、本実施例のマルチコアプロセッサによる効果を説明するための図であり、8つのコア(プロセッサコア)CR1〜CR8を含むマルチコアプロセッサによる処理の例を示すものである。
ここで、図12に示されるように、時間T1では、8個のコアCR1〜CR8の全てが処理を実行中(処理中)であり、処理コア数Npc(M)=8になり、時間T2では、6個のコアCR3〜CR8が処理中であり、M=6になる。
また、時間T3では、5個のコアCR4〜CR8が処理中であるためM=5になり、時間T4では、3個のコアCR6〜CR8が処理中であるためM=6になり、時間T5では、2個のコアCR7,CR8が処理中であり、M=2になる。なお、コア数Nac(N)は、CR1〜CR8の8個であるため、N=8になる。
ここで、一例として、コア電力値上限値14(Plt)を10W、同期待ちコア電力値15(Pwt)を6W、そして、低電力状態のPwtを2Wと仮定する。さらに、図13に示されるように、例えば、定格周波数を3.0GHz、設定可能なブースト周波数が3.2GHz,3.4GHz,3.6GHz,3.8GHz,4.0GHz,4.2GHzであるようなマルチコアプロセッサを想定する。なお、これらのブースト周波数は、定格電圧で動作可能であるとする。
このマルチコアプロセッサで同期グループのコア数が8個(N=8)で、処理実行時のコア電力値(Pcr)がほぼ10W(Pcr≒10W)であると仮定する。定格周波数におけるバリア同期前のバリア同期待ち状況は、例えば、図12のように変化する。
以下に、本実施例(同期待ち状態のコアをより消費電力が低い状態に遷移させ、それにより生じた追加の電力余裕により処理中のコアのブースト周波数をさらに上げる実施例)を適用した場合としなかった場合のバリア同期待ち期間の処理時間の違いを計算する。
なお、計算を簡単にするために、周波数制御の遅延は無視する。まず、同期グループ内の8個のコア(N=8)のうち、処理コア数(M)を1〜8まで変化させた時、前述した式(2)から求められるターゲット周波数(F')を上記の設定可能周波数に変換すると、図13のようになる。
図12に示されるように、例えば、同期待ち期間の最初の50μsの期間(時間T2)は、6コアが処理中(M=6)なので、本実施例を適用した場合としなかった場合のクロック周波数は、それぞれ3.4GHz,3.8GHzになる。
また、その次の50μsの期間(時間T2)は、5コアが処理中(M=5)なので、実施例を適用した場合としなかった場合のクロック周波数は、それぞれ3.6GHz,4.2GHzになり、それ以降は、どちらも4.2GHzになる。
そのため、バリア同期待ち期間の処理時間は、例えば、実施例を適用しない場合、50×3.0/3.4+50×3.0/3.6+100×3.0/4.2 ≒ 157μs になり、適用した場合、50×3.0/3.8+150×3.0/4.2 ≒ 147μs になる。従って、処理時間の改善効果は、例えば、(157−147)/157 ≒ 6.7%になる。
なお、図10を参照して説明した、同期待ちコアを低電力状態に移行した後、処理コア数がある設定値より小さくなったら同期待ちコアの低電力状態を解除するという第4実施例を適用しない場合、同期完了後に低電力状態からコアを復帰する時間が余計に掛かる。
なお、図13に示される場合には、例えば、低電力モード解除閾値を『2』に設定すれば、同期完了(バリアポイントに到達)の50μs前(実際には、周波数ブーストが適用されるので50×3.0/4.2 ≒ 36μs前)の処理コア数が2になった段階で解除される。
すなわち、処理コア数が2(M=2)になった段階で、待機コアの低電力状態が解除されて通常待機状態になるため、復帰時間が36μs以内であれば、低電力状態からの復帰時間による処理時間の増加は生じないことになる。
以上において、本実施例は、ソフトウェアプログラムとして実施することもで可能である。その場合、例えば、マルチコアプロセッサの複数のコアにおける所定のプロセッサコア、例えば、OS(Operating System)プロセスが実行されるコア(演算処理装置)により、実行される。或いは、マルチコアプロセッサの外部に設けられた上位のプロセッサ(演算処理装置)により実行されてもよい。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
複数のプロセッサコアと、前記プロセッサコア間におけるバリア同期を制御するバリア同期制御部と、を有するマルチコアプロセッサであって、
それぞれの前記プロセッサコアは、
自身のクロック周波数を制御する周波数制御部と、
前記周波数制御部の出力に基づいて、自身のクロック周波数を調整する周波数調整回路と、を含み、
前記周波数制御部は、コア数および処理コア数を受け取って、ターゲット周波数を出力する、
ことを特徴とするマルチコアプロセッサ。
(付記2)
前記マルチコアプロセッサは、前記マルチコアプロセッサの全体、または、バリア同期を行う同期グループ毎に、消費電力の制約が課され、
複数の前記プロセッサコアは、複数の同期グループに分割して割り当てられ、
前記コア数は、それぞれの前記同期グループに含まれる全てのプロセッサコアのコア数であり、
前記処理コア数は、それぞれの前記同期グループにおける処理中のプロセッサコアの処理コア数であり、
前記周波数制御部は、それぞれの前記同期グループにおける前記コア数および前記処理コア数を受け取って、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を出力する、
ことを特徴とする付記1に記載のマルチコアプロセッサ。
(付記3)
それぞれの前記プロセッサコアは、さらに、
コア電力上限値を格納する第1レジスタと、
同期待ちコア電力値を格納する第2レジスタと、を有し、
前記周波数制御部は、それぞれの前記同期グループにおける前記コア数および前記処理コア数と共に、前記コア電力上限値,前記同期待ちコア電力値,現クロック周波数,および,自身のコア電力値に基づいて、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を出力する、
ことを特徴とする付記2に記載のマルチコアプロセッサ。
(付記4)
それぞれの前記プロセッサコアは、さらに、
固定のコア電力値を格納する第3レジスタと、
定格周波数を格納する第4レジスタと、
前記固定のコア電力値,前記定格周波数および前記現クロック周波数に基づいて、前記自身のコア電力値を算出するコア電力値算出部と、を有し、
前記コア電力値算出部で算出された前記自身のコア電力値を、前記周波数制御部に出力する、
ことを特徴とする付記3に記載のマルチコアプロセッサ。
(付記5)
それぞれの前記プロセッサコアは、さらに、
前記自身のコア電力値を、動的にモニタする電力モニタ部を有し、
前記電力モニタ部によりモニタされた前記自身のコア電力値を、前記周波数制御部に出力する、
ことを特徴とする付記3に記載のマルチコアプロセッサ。
(付記6)
前記電力モニタ部は、
自身の電力計算用のイベントカウンタの値を受け取って、前記自身のコア電力値を動的にモニタする、
ことを特徴とする付記5に記載のマルチコアプロセッサ。
(付記7)
前記周波数制御部は、
同期待ちに入ったプロセッサコアをより消費電力の低い低電力状態に遷移させると共に、前記処理中のプロセッサコアのクロック周波数を上昇させる、
ことを特徴とする付記2乃至付記6のいずれか1項に記載のマルチコアプロセッサ。
(付記8)
前記周波数制御部は、
同期待ちに入ったプロセッサコアをより消費電力の低い状態に遷移させた後、前記処理コア数が低電力モード解除閾値より小さくなったら、前記同期待ちのプロセッサコアの低電力状態を解除する、
ことを特徴とする付記2乃至付記6のいずれか1項に記載のマルチコアプロセッサ。
(付記9)
それぞれの前記プロセッサコアは、さらに、
前記周波数制御部からのターゲット周波数と、規定のバリア同期待ち時周波数の一方を選択して、前記周波数調整回路に出力するセレクタを有する、
ことを特徴とする付記1乃至付記8のいずれか1項に記載のマルチコアプロセッサ。
(付記10)
前記周波数調整回路は、PLL回路である、
ことを特徴とする付記9に記載のマルチコアプロセッサ。
(付記11)
複数のプロセッサコアを有し、複数の前記プロセッサコアは、複数の同期グループに分割して割り当てられ、マルチコアプロセッサの全体、または、バリア同期を行う同期グループ毎に、消費電力の制約が課され、前記プロセッサコア間におけるバリア同期を制御するマルチコアプロセッサのクロック制御方法であって、
それぞれの前記同期グループに含まれる全てのプロセッサコアのコア数の情報と、
それぞれの前記同期グループにおける処理中のプロセッサコアの処理コア数の情報と、
コア電力上限値の情報と、
同期待ちコア電力値の情報と、
自身のコア電力値の情報と、
に基づいて、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を算出して制御する、ことを特徴とする、
マルチコアプロセッサのクロック制御方法。
(付記12)
さらに、
同期待ちに入ったプロセッサコアをより消費電力の低い低電力状態に遷移させると共に、前記処理中のプロセッサコアのクロック周波数を上昇させる、
ことを特徴とする付記11に記載のマルチコアプロセッサのクロック制御方法。
(付記13)
さらに、
同期待ちに入ったプロセッサコアをより消費電力の低い状態に遷移させた後、前記処理コア数が低電力モード解除閾値より小さくなったら、前記同期待ちのプロセッサコアの低電力状態を解除する、
ことを特徴とする付記11に記載のマルチコアプロセッサのクロック制御方法。
(付記14)
複数のプロセッサコアを有し、複数の前記プロセッサコアは、複数の同期グループに分割して割り当てられ、マルチコアプロセッサの全体、または、バリア同期を行う同期グループ毎に、消費電力の制約が課され、前記プロセッサコア間におけるバリア同期を制御するマルチコアプロセッサのクロック制御プログラムであって、
演算処理装置に、
それぞれの前記同期グループに含まれる全てのプロセッサコアのコア数の情報と、
それぞれの前記同期グループにおける処理中のプロセッサコアの処理コア数の情報と、
コア電力上限値の情報と、
同期待ちコア電力値の情報と、
自身のコア電力値の情報と、
に基づいて、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を算出して制御する、処理を実行させる、ことを特徴とする、
マルチコアプロセッサのクロック制御プログラム。
(付記15)
前記演算処理装置は、複数の前記プロセッサコアのいずれか、或いは、前記マルチコアプロセッサの外部に設けられた上位のプロセッサである、
ことを特徴とする付記14に記載のマルチコアプロセッサのクロック制御プログラム。
10,100,200,CR1〜CRn コア(プロセッサコア)
11 周波数制御部
12 PLL(周波数調整回路)
13,Pcr コア電力値
14,Plt コア電力上限値
15,Pwt 同期待ちコア電力値
16,F 現クロック周波数
17 コア電力算出部
18 定格周波数
19 電力モニタ部
50,300 バリア同期制御部
51 バリア状態レジスタ
52 EXNORゲート
53 セレクタ回路
110 セレクタ
130,140,150,180 レジスタ
501〜50k 同期グループマスク回路
511 グループ定義レジスタ
512 ANDゲート
513 第1カウンタ
514 第2カウンタ
Nac,N,N1ac,N2ac,… コア数
Npc,M,N1pc,N2pc,… 処理コア数

Claims (9)

  1. 複数のプロセッサコアと、前記プロセッサコア間におけるバリア同期を制御するバリア同期制御部と、を有するマルチコアプロセッサであって、
    それぞれの前記プロセッサコアは、
    自身のクロック周波数を制御する周波数制御部と、
    前記周波数制御部の出力に基づいて、自身のクロック周波数を調整する周波数調整回路と、を含み、
    前記周波数制御部は、コア数および処理コア数を受け取って、ターゲット周波数を出力する、
    ことを特徴とするマルチコアプロセッサ。
  2. 前記マルチコアプロセッサは、前記マルチコアプロセッサの全体、または、バリア同期を行う同期グループ毎に、消費電力の制約が課され、
    複数の前記プロセッサコアは、複数の同期グループに分割して割り当てられ、
    前記コア数は、それぞれの前記同期グループに含まれる全てのプロセッサコアのコア数であり、
    前記処理コア数は、それぞれの前記同期グループにおける処理中のプロセッサコアの処理コア数であり、
    前記周波数制御部は、それぞれの前記同期グループにおける前記コア数および前記処理コア数を受け取って、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を出力する、
    ことを特徴とする請求項1に記載のマルチコアプロセッサ。
  3. それぞれの前記プロセッサコアは、さらに、
    コア電力上限値を格納する第1レジスタと、
    同期待ちコア電力値を格納する第2レジスタと、を有し、
    前記周波数制御部は、それぞれの前記同期グループにおける前記コア数および前記処理コア数と共に、前記コア電力上限値,前記同期待ちコア電力値,現クロック周波数,および,自身のコア電力値に基づいて、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を出力する、
    ことを特徴とする請求項2に記載のマルチコアプロセッサ。
  4. それぞれの前記プロセッサコアは、さらに、
    固定のコア電力値を格納する第3レジスタと、
    定格周波数を格納する第4レジスタと、
    前記固定のコア電力値,前記定格周波数および前記現クロック周波数に基づいて、前記自身のコア電力値を算出するコア電力値算出部と、を有し、
    前記コア電力値算出部で算出された前記自身のコア電力値を、前記周波数制御部に出力する、
    ことを特徴とする請求項3に記載のマルチコアプロセッサ。
  5. それぞれの前記プロセッサコアは、さらに、
    前記自身のコア電力値を、動的にモニタする電力モニタ部を有し、
    前記電力モニタ部によりモニタされた前記自身のコア電力値を、前記周波数制御部に出力する、
    ことを特徴とする請求項3に記載のマルチコアプロセッサ。
  6. 前記周波数制御部は、
    同期待ちに入ったプロセッサコアをより消費電力の低い状態に遷移させた後、前記処理コア数が低電力モード解除閾値より小さくなったら、前記同期待ちのプロセッサコアの低電力状態を解除する、
    ことを特徴とする請求項2乃至請求項5のいずれか1項に記載のマルチコアプロセッサ。
  7. それぞれの前記プロセッサコアは、さらに、
    前記周波数制御部からのターゲット周波数と、規定のバリア同期待ち時周波数の一方を選択して、前記周波数調整回路に出力するセレクタを有する、
    ことを特徴とする請求項1乃至請求項6のいずれか1項に記載のマルチコアプロセッサ。
  8. 複数のプロセッサコアを有し、複数の前記プロセッサコアは、複数の同期グループに分割して割り当てられ、マルチコアプロセッサの全体、または、バリア同期を行う同期グループ毎に、消費電力の制約が課され、前記プロセッサコア間におけるバリア同期を制御するマルチコアプロセッサのクロック制御方法であって、
    それぞれの前記同期グループに含まれる全てのプロセッサコアのコア数の情報と、
    それぞれの前記同期グループにおける処理中のプロセッサコアの処理コア数の情報と、
    コア電力上限値の情報と、
    同期待ちコア電力値の情報と、
    自身のコア電力値の情報と、
    に基づいて、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を算出して制御する、ことを特徴とする、
    マルチコアプロセッサのクロック制御方法。
  9. 複数のプロセッサコアを有し、複数の前記プロセッサコアは、複数の同期グループに分割して割り当てられ、マルチコアプロセッサの全体、または、バリア同期を行う同期グループ毎に、消費電力の制約が課され、前記プロセッサコア間におけるバリア同期を制御するマルチコアプロセッサのクロック制御プログラムであって、
    演算処理装置に、
    それぞれの前記同期グループに含まれる全てのプロセッサコアのコア数の情報と、
    それぞれの前記同期グループにおける処理中のプロセッサコアの処理コア数の情報と、
    コア電力上限値の情報と、
    同期待ちコア電力値の情報と、
    自身のコア電力値の情報と、
    に基づいて、それぞれの前記同期グループにおける前記プロセッサコアのターゲット周波数を算出して制御する、処理を実行させる、ことを特徴とする、
    マルチコアプロセッサのクロック制御プログラム。
JP2015137665A 2015-07-09 2015-07-09 マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム Pending JP2017021513A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015137665A JP2017021513A (ja) 2015-07-09 2015-07-09 マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015137665A JP2017021513A (ja) 2015-07-09 2015-07-09 マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム

Publications (1)

Publication Number Publication Date
JP2017021513A true JP2017021513A (ja) 2017-01-26

Family

ID=57889591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015137665A Pending JP2017021513A (ja) 2015-07-09 2015-07-09 マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム

Country Status (1)

Country Link
JP (1) JP2017021513A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018524658A (ja) * 2015-07-13 2018-08-30 グーグル エルエルシー プロセッサコア動作の調整
CN113726335A (zh) * 2021-08-24 2021-11-30 平头哥(上海)半导体技术有限公司 时钟控制电路、时钟电路和电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018524658A (ja) * 2015-07-13 2018-08-30 グーグル エルエルシー プロセッサコア動作の調整
CN113726335A (zh) * 2021-08-24 2021-11-30 平头哥(上海)半导体技术有限公司 时钟控制电路、时钟电路和电子设备
CN113726335B (zh) * 2021-08-24 2024-04-16 北京平头哥信息技术有限公司 时钟控制电路、时钟电路和电子设备

Similar Documents

Publication Publication Date Title
TWI522801B (zh) 控制處理器功率消耗之數位功率評估器
TWI536158B (zh) 基於使用中處理器之動態電壓及頻率管理
CN105183128B (zh) 强制处理器进入低功率状态
US8190863B2 (en) Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
KR101980502B1 (ko) 동적 전압 마진 복구
Salehi et al. Dynamic voltage and frequency scheduling for embedded processors considering power/performance tradeoffs
US11360540B2 (en) Processor core energy management
Floyd et al. Adaptive energy-management features of the IBM POWER7 chip
US20140068299A1 (en) Processor, information processing apparatus, and power consumption management method
Xu et al. Energy-efficient scheduling with reliability guarantee in embedded real-time systems
Mishra et al. RAFT: A router architecture with frequency tuning for on-chip networks
TW202113604A (zh) 適應性晶片上數位電力估計器
KR102306084B1 (ko) 클럭 디바이더 디바이스 및 그 방법
JP2016212554A (ja) 演算処理装置及び演算処理装置の制御方法
Kim et al. 2.4 A 7nm high-performance and energy-efficient mobile application processor with tri-cluster CPUs and a sparsity-aware NPU
JP2017021513A (ja) マルチコアプロセッサ、マルチコアプロセッサのクロック制御方法およびクロック制御プログラム
Zakaria et al. Self-adaption in SoCs
Xu et al. Improving power and performance of on-chip network through virtual channel sharing and power gating
Khan et al. Hardware/software co-design architecture for thermal management of chip multiprocessors
Khan et al. A framework for predictive dynamic temperature management of microprocessor systems
US9465614B2 (en) Parallel execution of instructions in processing units and adjusting power mode based on monitored data dependency over a period of time
CN107924331B (zh) 用于灵活和动态频率相关遥测的技术
JP2010140319A (ja) 半導体装置
Catthoor et al. DVFS-Oriented Scenario Applications to Processor Architectures
Bauer et al. Design and evaluation of an adaptive real-time microprocessor