(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-10
(54)【発明の名称】情報処理装置及び情報処理装置における制御方法
(51)【国際特許分類】
G06F 1/324 20190101AFI20240903BHJP
G06F 15/78 20060101ALI20240903BHJP
G06F 1/3206 20190101ALI20240903BHJP
G06F 1/08 20060101ALI20240903BHJP
【FI】
G06F1/324
G06F15/78 517
G06F1/3206
G06F1/08 510
(21)【出願番号】P 2020118546
(22)【出願日】2020-07-09
【審査請求日】2023-04-07
【前置審査】
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】瀬野尾 晃弘
【審査官】豊田 真弓
(56)【参考文献】
【文献】米国特許出願公開第2017/0242472(US,A1)
【文献】特表2008-513912(JP,A)
【文献】特開平11-353052(JP,A)
【文献】特開2004-303206(JP,A)
【文献】米国特許第06167524(US,A)
【文献】米国特許第06513124(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/324
G06F 15/78
G06F 1/3206
G06F 1/08
(57)【特許請求の範囲】
【請求項1】
演算処理部を備える情報処理装置であって、
前記演算処理部は、
前記演算処理部の消費電力を測定する電力測定部と、
前記演算処理部の性能を測定する性能測定部と、
前記演算処理部によりプログラムが実行されている間に
前記演算処理部の動作周波数を所定値だけ低下させた後に測定された前記演算処理部の消費電力
が閾値よりも大きい場合、前記演算処理部の電力効率の低下を検出する検出部と、
前記電力効率の低下が検出された場合、前記演算処理部の動作パラメータを変更しながら前記演算処理部に前記プログラムを実行させ、前記動作パラメータを変更しながら前記プログラムが実行されている間に測定された前記演算処理部の消費電力及び性能に基づいて、前記動作パラメータの設定値を決定する決定部と、
を含むことを特徴とする情報処理装置。
【請求項2】
前記動作パラメータは、前記演算処理部のリソースのサイズを示すパラメータであることを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記動作パラメータは、前記演算処理部のリソースを使用するか否かを示すパラメータであることを特徴とする請求項1記載の情報処理装置
。
【請求項4】
前記決定部は、前記演算処理部の動作パラメータの複数の値各々を用いて前記プログラムが実行されている間に測定された前記演算処理部の消費電力に対する前記演算処理部の性能の比率を求め、前記複数の値のうち前記比率の最大値に対応する値を、前記設定値に決定することを特徴とする請求項1乃至
3の何れか1項に記載の情報処理装置。
【請求項5】
演算処理部を備える情報処理装置における制御方法であって、
前記演算処理部によりプログラムが実行されている間に
前記演算処理部の動作周波数を所定値だけ低下させた後に測定された前記演算処理部の消費電力
が閾値よりも大きい場合、前記演算処理部の電力効率の低下を検出し、
前記電力効率の低下が検出された場合、前記演算処理部の動作パラメータを変更しながら前記演算処理部に前記プログラムを実行させ、
前記動作パラメータを変更しながら前記プログラムが実行されている間に測定された前記演算処理部の消費電力及び性能に基づいて、前記動作パラメータの設定値を決定する、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理装置における制御方法に関する。
【背景技術】
【0002】
データセンタ、HPC(High-Performance Computing)向けシステム等の大規模システムにおいて、情報処理装置(コンピュータ)が使用されている。情報処理装置において、プロセッサの性能を向上させるために、並列処理性能を高める技術と単体処理性能を高める技術とが進化してきている。
【0003】
プロセッサの性能は、例えば、単位時間当たりに実行される命令の個数により評価される。プロセッサは、CPU(Central Processing Unit)と呼ばれることもある。並列処理性能を高める技術には、マルチプロセッサ、マルチコア、マルチスレッド等が含まれ、単体処理性能を高める技術には、マイクロアーキテクチャの改善が含まれる。
【0004】
マルチプロセッサ、マルチコア、マルチスレッド等による並列処理の規模は、半導体の微細化レベル及びプロセッサのダイに搭載可能な物量に応じて決定される。並列処理性能が増強されると、プロセッサの性能が向上するが、消費電力も増加する。しかし、並列処理性能をハードウェアで制御しながら、消費電力を抑えることは困難である。
【0005】
単体処理については、アウトオブオーダ実行のリソースの増強又は改良、投機実行、ハードウェアプリフェッチ、ソフトウェアプリフェッチ等により、マイクロアーキテクチャの改善が図られている。並列処理性能と同様に、単体処理性能が増強されると、プロセッサの消費電力が増加し、消費電力の要件を満たすことが難しくなる。しかし、並列処理性能とは異なり、単体処理性能をハードウェアで制御することで、消費電力を抑えることが可能である。
【0006】
図1は、従来のマルチコアプロセッサの構成例を示している。
図1のプロセッサ101は、コア111-1~コア111-3及びキャッシュメモリ112を含む。各コア111-p(p=1~3)は、命令制御部121-p、実行部122-p、及びキャッシュメモリ123-pを含む。命令制御部121-pは、性能カウンタ131-pを含む。
【0007】
命令制御部121-pは、プログラムに含まれる命令をフェッチしてデコードし、実行部122-pは、デコードされた命令を実行する。性能カウンタ131-pは、命令の実行等の性能イベントをカウントして、コア111-pの性能を示す性能情報を生成する。
【0008】
キャッシュメモリ123-pは、コア111-pの専用キャッシュメモリであり、キャッシュメモリ112は、コア111-1~コア111-3の共用キャッシュメモリである。キャッシュメモリ123-pは、レベル1のキャッシュメモリであり、キャッシュメモリ112は、レベル2のキャッシュメモリである。
【0009】
各コア111-pは、複数のスレッドをサポートすることで、プロセッサ101の性能を向上させる。さらに、複数のプロセッサ101を接続することで、マルチプロセッサシステムが構築される。マルチプロセッサシステムの性能は、プロセッサ101単体の性能よりも向上する。
【0010】
プロセッサの性能の向上に関連して、単位時間当たりのプロセッサにより実行されたユーザ・モードの命令数及び単位時間当たりのプロセッサの総実行命令数を用いる、プロセッサの動作速度制御方法が知られている(例えば、特許文献1を参照)。マイクロアーキテクチャの性能をモニタリングし、モニタリングされた性能に基づいてマイクロアーキテクチャをチューニングする方法も知られている(例えば、特許文献2を参照)。
【先行技術文献】
【特許文献】
【0011】
【文献】特開平11-353052号公報
【文献】特開2012-178173号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述したように、プロセッサ又は情報処理装置の集積度を上昇させることで、全体の処理性能を向上させることができる。しかしながら、集積度の上昇に伴って消費電力も増大するため、情報処理装置の性能を向上させつつ、消費電力を抑えることが望ましい。
【0013】
なお、かかる問題は、データセンタ、HPC向けシステム等の大規模システムに限らず、様々な規模の情報処理装置において生ずるものである。
【0014】
1つの側面において、本発明は、情報処理装置の電力効率を向上させることを目的とする。
【課題を解決するための手段】
【0015】
1つの案では、情報処理装置は、演算処理部を含む。演算処理部は、電力測定部、性能測定部、検出部、及び決定部を含む。
【0016】
電力測定部は、演算処理部の消費電力を測定し、性能測定部は、演算処理部の性能を測定する。検出部は、演算処理部によりプログラムが実行されている間に測定された演算処理部の消費電力に基づいて、演算処理部の電力効率の低下を検出する。
【0017】
決定部は、電力効率の低下が検出された場合、演算処理部の動作パラメータを変更しながら演算処理部にプログラムを実行させる。そして、決定部は、動作パラメータを変更しながらプログラムが実行されている間に測定された演算処理部の消費電力及び性能に基づいて、動作パラメータの設定値を決定する。
【発明の効果】
【0018】
1つの側面によれば、情報処理装置の電力効率を向上させることができる。
【図面の簡単な説明】
【0019】
【
図1】従来のマルチコアプロセッサの構成図である。
【
図5】プロセッサ内における構成要素の接続関係を示す図である。
【
図10A】第1の動作パラメータ探索処理のフローチャート(その1)である。
【
図10B】第1の動作パラメータ探索処理のフローチャート(その2)である。
【
図12】第2の動作パラメータ探索処理のフローチャートである。
【発明を実施するための形態】
【0020】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0021】
近年のプロセッサにおける高集積化及び機能の追加に伴って、プロセッサの消費電力が増加している。一方、高性能化に対する要求は高まっており、消費電力当たりの性能を最大化することが好ましい。消費電力当たりの性能は、プロセッサの消費電力に対するプロセッサの性能の比率を表す。
【0022】
情報処理装置により実行されるユーザプログラムの種類は多岐にわたり、その挙動及び特徴は、ユーザプログラム毎に異なっている。このため、プロセッサの性能の向上及び消費電力の抑制の方法は一律に決められるものではなく、消費電力当たりの性能を最大化する方法は、ユーザプログラムに応じて異なるものになる。
【0023】
消費電力を抑える方法として、プロセッサの動作周波数の調整が挙げられる。例えば、プログラム等が動作しておらず、プロセッサの負荷が高くない状態では、動作周波数を低く抑えたり、動作周波数を定格周波数よりも上昇させる機能を抑止したりすることで、消費電力が抑えられる。
【0024】
キャッシュサイズ、アウトオブオーダ実行のリソース等を削減することで、消費電力を抑えることもできるが、このようなプロセッサのリソースの調整は、ユーザに対して開放されていないことが多い。リソースの調整がユーザに対して開放されていたとしても、リソースを動的に変更する技術は存在しない。
【0025】
特許文献1の技術では、プロセッサの動作速度が制御されるだけであり、プロセッサのリソースの調整は行われていない。
【0026】
特許文献2の技術では、マイクロアーキテクチャの性能がモニタリングされ、モニタリングされた性能に基づいてマイクロアーキテクチャがチューニングされる。しかし、マイクロアーキテクチャのチューニングは、性能の強化にとどまっており、消費電力を抑えたり、消費電力当たりの性能を向上させたりするものではない。
【0027】
また、プロセッサのリソースをユーザが静的に変更することで、消費電力当たりの性能を向上させる方法では、ユーザの作業負荷が増加する。例えば、情報処理装置に搭載されるメモリの量を変更することで、メモリスループットを調整することができる。しかし、メモリの量を変更するために、情報処理装置の電源をオフにして、メモリボードの挿抜を行う作業が発生する。
【0028】
プロセッサのリソースを静的に変更して消費電力を測定する作業を繰り返しながら、消費電力当たりの性能を最大化する場合、ユーザの作業負荷はさらに増加する。
【0029】
図2は、実施形態の情報処理装置の機能的構成例を示している。
図2の情報処理装置201は、演算処理部211を含む。演算処理部211は、電力測定部221、性能測定部222、検出部223、及び決定部224を含む。
【0030】
電力測定部221は、演算処理部211の消費電力を測定し、性能測定部222は、演算処理部211の性能を測定する。検出部223は、演算処理部211によりプログラムが実行されている間に測定された演算処理部211の消費電力に基づいて、演算処理部211の電力効率の低下を検出する。
【0031】
決定部224は、電力効率の低下が検出された場合、演算処理部211の動作パラメータを変更しながら、演算処理部211にプログラムを実行させる。そして、決定部224は、動作パラメータを変更しながらプログラムが実行されている間に測定された演算処理部211の消費電力及び性能に基づいて、動作パラメータの設定値を決定する。
【0032】
図2の情報処理装置201によれば、情報処理装置201の電力効率を向上させることができる。
【0033】
図3は、
図2の情報処理装置201のハードウェア構成例を示している。
図3の情報処理装置301は、例えば、データセンタ、HPC向けシステム等において使用されるサーバであり、プロセッサ311及びメモリ312を含む。情報処理装置301は、不図示のシステムボード及び電源をさらに含む。プロセッサ311及びメモリ312は、ハードウェアである。
【0034】
プロセッサ311は、
図2の演算処理部211に対応する。メモリ312は、例えば、RAM(Random Access Memory)等の半導体メモリである。プロセッサ311は、メモリ312を利用して、ユーザプログラム等のプログラムを実行する。
【0035】
なお、情報処理装置301は、I/O(Input/Output)コントローラ、補助記憶装置等をさらに含んでいてもよい。
【0036】
図4は、
図3のプロセッサ311の構成例を示している。
図4のプロセッサ311は、コア411-1~コア411-3、キャッシュメモリ412、電力モニタ413、及び制御プロセッサ414を含む。各コア411-p(p=1~3)は、命令制御部421-p、実行部422-p、及びキャッシュメモリ423-pを含む。命令制御部421-pは、性能カウンタ431-pを含む。
【0037】
命令制御部421-pは、プログラムに含まれる命令をフェッチしてデコードし、実行部422-pは、デコードされた命令を実行する。性能カウンタ431-pは、
図2の性能測定部222に対応し、コア411-pによる命令の実行等の性能イベントをカウントすることで、コア411-pの性能を測定する。
【0038】
キャッシュメモリ423-pは、コア411-pの専用キャッシュメモリであり、キャッシュメモリ412は、コア411-1~コア411-3の共用キャッシュメモリである。キャッシュメモリ423-pは、レベル1のキャッシュメモリであり、キャッシュメモリ412は、レベル2のキャッシュメモリである。
【0039】
電力モニタ413は、
図2の電力測定部221に対応し、コア411-1~コア411-3及びキャッシュメモリ412の消費電力を測定する。制御プロセッサ414は、
図2の検出部223及び決定部224に対応し、コア411-1~コア411-3及びキャッシュメモリ412を制御する。そして、制御プロセッサ414は、性能カウンタ431-pにより測定された性能と、電力モニタ413により測定された消費電力とを用いて、プロセッサ311の動作パラメータの最適な設定値を決定する。
【0040】
図4のプロセッサ311には3個のコア411-pが含まれているが、プロセッサ311に含まれるコア411-pの個数は、1個、2個、又は4個以上であってもよい。
【0041】
図5は、
図4のプロセッサ311内における構成要素の接続関係の例を示している。各コア411-p内の命令制御部421-p及び実行部422-pは、キャッシュメモリ423-pに接続されており、キャッシュメモリ423-pは、キャッシュメモリ412に接続されている。
【0042】
電力モニタ413は、コア411-1~コア411-3及びキャッシュメモリ412に接続されている。制御プロセッサ414は、命令制御部421-1~命令制御部421-3、実行部422-1~実行部422-3、キャッシュメモリ423-1~キャッシュメモリ423-3、及びキャッシュメモリ412に接続されている。さらに、制御プロセッサ414は、性能カウンタ431-1~性能カウンタ431-3及び電力モニタ413にも接続されている。
【0043】
制御プロセッサ414は、コア411-1~コア411-3によるプログラムの実行中に測定された消費電力を用いて、プロセッサ311の電力効率の低下を検出する。電力効率の低下が検出された場合、制御プロセッサ414は、プロセッサ311の動作パラメータを変更しながら、コア411-1~コア411-3にプログラムを実行させる。
【0044】
次に、制御プロセッサ414は、プログラムが実行されている間に測定された消費電力及び性能を用いて、消費電力当たりの性能が最大化される動作パラメータの設定値を探索する。そして、制御プロセッサ414は、探索された設定値をプロセッサ311に設定し、コア411-1~コア411-3にプログラムを再度実行させる。
【0045】
プロセッサ311の動作パラメータは、プロセッサ311の動作周波数を示すパラメータと、マイクロアーキテクチャのパラメータとを含む。プロセッサ311の動作周波数は、コア411-1~コア411-3のクロック信号の周波数を表す。動作周波数を低下させることで、プロセッサ311の消費電力を抑えることができる。
【0046】
マイクロアーキテクチャのパラメータは、プロセッサ311のリソースのサイズを示すパラメータと、プロセッサ311のリソースを使用するか否かを示すパラメータとを含む。
【0047】
リソースのサイズを示すパラメータは、シングルインストラクション・マルチプルデータ(Single Instruction Multiple Data,SIMD)幅、ラストレベルキャッシュサイズ、又はメモリスループットを示すパラメータであってもよい。
図4及び
図5のプロセッサ311の場合、ラストレベルキャッシュはキャッシュメモリ412である。プロセッサ311は、プロセッサ311内のメモリアクセスコントローラ(不図示)とメモリ312との間のバスの幅を変更することで、メモリスループットを調整することができる。
【0048】
リソースを使用するか否かを示すパラメータは、パイプライン、分岐予測、又はプリフェッチを使用するか否かを示すパラメータであってもよい。パイプライン及びプリフェッチは、実行部422-pのリソースであり、分岐予測は、命令制御部421-pのリソースである。
【0049】
使用されるリソースのサイズを減少させるか、又は何れかのリソースの使用を停止することで、プロセッサ311の消費電力を抑えることができる。
【0050】
各リソースの使用頻度は、プロセッサ311により実行されるユーザプログラムの特性に応じて変化する。したがって、消費電力当たりの性能が最大化される動作パラメータの組み合わせは、一律に決められるものではなく、ユーザプログラム毎に異なってくる。
【0051】
図4及び
図5のプロセッサ311では、制御プロセッサ414が、消費電力当たりの性能が最大化される動作パラメータの組み合わせを自動的に探索し、プロセッサ311の動作パラメータを動的に変更する。これにより、情報処理装置301の電力効率を向上させることができる。プロセッサ311により実行されるユーザプログラムが変更された場合、動作パラメータの探索を再度行うことで、各ユーザプログラムに適した動作パラメータの組み合わせを求めることができる。
【0052】
動作パラメータを動的に変更することで、情報処理装置301の電源をオフにする必要がなくなり、動作パラメータの変更に伴うユーザの作業負荷が軽減される。これにより、作業時間が短縮される。
【0053】
図6は、
図4及び
図5の性能カウンタ431-pの構成例を示している。
図6の性能カウンタ431-pは、比較器601、加算器602、カウントレジスタ603、及びイベントレジスタ604を含む。
【0054】
イベントレジスタ604は、測定対象の性能イベントを記憶する。測定対象の性能イベントは、コア411-pによる命令の実行、キャッシュメモリ423-pに対するアクセスの発生等である。信号SEは、コア411-p内で発生した性能イベントを示す。カウントレジスタ603は、測定対象の性能イベントの発生回数を示すカウント値を記憶する。カウント値の初期値は0である。
【0055】
比較器601は、イベントレジスタ604が記憶する性能イベントと、信号SEが示す性能イベントとを比較し、2つの性能イベントが一致した場合、カウントアップ信号を加算器602へ出力する。加算器602は、比較器601からカウントアップ信号が出力された場合、カウントレジスタ603が記憶するカウント値を1だけインクリメントする。
【0056】
性能カウンタ431-pは、所定期間内に発生した性能イベントの回数を示すカウント値を、コア411-pの性能を示す性能情報として、制御プロセッサ414へ出力する。例えば、測定対象の性能イベントが命令の実行である場合、コア411-pの性能情報は、MIPS(Million Instructions Per Second)であってもよい。
【0057】
図7は、
図4及び
図5の電力モニタ413の構成例を示している。
図7の電力モニタ413は、計算回路701及び係数レジスタ702を含む。信号S1~信号S3は、それぞれ、コア411-1~コア411-3の消費電力を示し、信号SCは、キャッシュメモリ412の消費電力を示す。係数レジスタ702は、係数W1~係数W3及び係数WCを記憶する。
【0058】
計算回路701は、信号S1~信号S3、信号SC、係数W1~係数W3、及び係数WCを用いて、次式によりプロセッサ311の消費電力Pを計算し、制御プロセッサ414へ出力する。
【0059】
P=S1×W1+S2×W2+S3×W3+SC×WC+C (1)
【0060】
Cは、所定の定数である。例えば、W1=W2=W3=WC=1、かつ、C=0である場合、消費電力Pは、次式により計算される。
【0061】
P=S1+S2+S3+SC (2)
【0062】
なお、消費電力が大きい他のハードウェアに電力モニタを配置することも可能である。例えば、
図3のメモリ312に電力モニタを配置することで、メモリ312の消費電力を測定することができる。
【0063】
図8は、
図4及び
図5の制御プロセッサ414の構成例を示している。
図8の制御プロセッサ414は、ステータスレジスタ801、性能レジスタ802、消費電力レジスタ803、及びデータレジスタ804を含む。
【0064】
ステータスレジスタ801は、プロセッサ311の動作モードを示すステータス情報を記憶する。プロセッサ311の動作モードは、通常モード、低速モード、又は探索モードの何れかである。通常モードは、通常の周波数のクロック信号に同期して動作する動作モードであり、低速モードは、通常の周波数よりも低い周波数のクロック信号に同期して動作する動作モードである。探索モードは、消費電力当たりの性能が最大化される動作パラメータの設定値を探索する動作モードである。
【0065】
性能レジスタ802は、性能カウンタ431-pから出力される性能情報を記憶し、消費電力レジスタ803は、電力モニタ413から出力される消費電力を記憶する。データレジスタ804は、プロセッサ311の消費電力当たりの性能を示す評価値を記憶する。
【0066】
図9は、
図4及び
図5の制御プロセッサ414が行う制御処理の例を示すフローチャートである。
図9の制御処理は、コア411-1~コア411-3がプログラムを実行している間に行われる。
【0067】
まず、制御プロセッサ414は、情報処理装置301の動作モードを低消費電力モードへ切り替える省電力指示を、OS(Operating System)から受け取る(ステップ901)。OSは、何れかのコア411-p内で動作し、例えば、情報処理装置301の消費電力又は負荷が所定値よりも小さくなった場合に、省電力指示を制御プロセッサ414へ出力する。
【0068】
次に、制御プロセッサ414は、ステータスレジスタ801が記憶しているステータス情報が通常モードを示しているか否かをチェックする(ステップ902)。ステータス情報が通常モードを示している場合(ステップ902,YES)、制御プロセッサ414は、コア411-1~コア411-3のクロック信号の周波数を、所定値Fだけ低下させる(ステップ903)。所定値Fは、クロック信号の通常の周波数の5%~20%の範囲の値であってもよい。
【0069】
次に、制御プロセッサ414は、ステータスレジスタ801のステータス情報を通常モードから低速モードに変更し(ステップ904)、電力モニタ413から出力される消費電力を取得して、消費電力レジスタ803に格納する(ステップ905)。そして、制御プロセッサ414は、消費電力レジスタ803が記憶している消費電力を閾値THと比較する(ステップ906)。閾値THは、プロセッサ311の最大消費電力の40%~60%の範囲の値であってもよい。
【0070】
コア411-1~コア411-3のクロック信号の周波数を低下させることで、理論的には、プロセッサ311の性能及び消費電力がともに低下する。しかし、周波数を所定値Fだけ低下させても消費電力があまり減少しない場合、プロセッサ311の消費電力当たりの性能が低下している可能性がある。したがって、クロック信号の周波数を低下させた後に測定された消費電力を閾値THと比較することで、プロセッサ311の電力効率のレベルをチェックすることができる。
【0071】
消費電力が閾値TH以下である場合(ステップ906,YES)、制御プロセッサ414は、プロセッサ311の電力効率が低下していないと判定する。そして、制御プロセッサ414は、コア411-1~コア411-3及びキャッシュメモリ412に対して、動作パラメータを現在の設定値のまま維持するように指示する(ステップ907)。
【0072】
一方、消費電力が閾値THよりも大きい場合(ステップ906,NO)、制御プロセッサ414は、プロセッサ311の電力効率が低下したと判定する。そして、制御プロセッサ414は、ステータスレジスタ801のステータス情報を低速モードから探索モードに変更する(ステップ909)。
【0073】
次に、制御プロセッサ414は、動作パラメータ探索処理を行うことで、動作パラメータの最適な設定値を、コア411-1~コア411-3及びキャッシュメモリ412に設定する(ステップ910)。
【0074】
ステータス情報が通常モードを示していない場合(ステップ902,NO)、制御プロセッサ414は、ステータス情報が低速モードを示しているか否かをチェックする(ステップ908)。ステータス情報が低速モードを示している場合(ステップ908,YES)、制御プロセッサ414は、ステップ905以降の処理を行う。一方、ステータス情報が探索モードを示している場合(ステップ908,NO)、制御プロセッサ414は、ステップ910の処理を行う。
【0075】
図10A及び
図10Bは、
図9のステップ910における第1の動作パラメータ探索処理の例を示すフローチャートである。まず、制御プロセッサ414は、変数X、変数Y、変数E[i][j](i=0~n、j=0~m)、及び変数MAX[j](j=0~m)に0を設定する(ステップ1001)。
【0076】
Xは、プロセッサ311の性能を表し、Yは、プロセッサ311の消費電力を表す。制御変数jは、プロセッサ311のj番目の動作パラメータを表し、制御変数iは、各動作パラメータのi番目の設定値を表す。n及びmは、0以上の整数である。ただし、nは、動作パラメータに応じて変化する。データレジスタ804は、各動作パラメータの0番目~n番目の設定値を記憶している。
【0077】
E[i][j]は、j番目の動作パラメータにi番目の設定値が設定された場合の消費電力当たりの性能を表し、MAX[j]は、E[0][j]~E[n][j]の最大値を表す。
【0078】
次に、制御プロセッサ414は、i及びjに0を設定し(ステップ1002)、jとmを比較する(ステップ1003)。jがm以下である場合(ステップ1003,NO)、制御プロセッサ414は、iとnを比較する(ステップ1004)。iがn以下である場合(ステップ1004,NO)、制御プロセッサ414は、j番目の動作パラメータにi番目の設定値を設定する制御を行う(ステップ1005)。
【0079】
図11は、m=6の場合の動作パラメータの例を示している。0番目の動作パラメータは、動作周波数を示し、0番目~n番目の設定値を有する。例えば、0番目の設定値は2.0GHzである。
【0080】
1番目の動作パラメータは、SIMD幅を示し、0番目~2番目(n=2)の設定値を有する。例えば、0番目の設定値は512bitである。2番目の動作パラメータは、ラストレベルキャッシュサイズを示し、0番目~n番目の設定値を有する。例えば、0番目の設定値は32MBである。3番目の動作パラメータは、メモリスループットを示し、0番目~n番目の設定値を有する。例えば、0番目の設定値は256GB/secである。
【0081】
4番目の動作パラメータは、パイプラインを使用するか否かを示し、0番目~n番目の設定値を有する。EXA及びEXBは、固定小数点演算パイプラインを表し、FLA及びFLBは、浮動小数点演算パイプラインを表し、EAGA及びEAGBは、ロード/ストア命令の仮想アドレス計算パイプラインを表す。“On”は、パイプラインを使用することを示し、“Off”は、パイプラインを使用しないことを示す。例えば、0番目の設定値は、すべてのパイプラインについて“On”である。
【0082】
5番目の動作パラメータは、分岐予測を使用するか否かを示し、0番目及び1番目(n=1)の設定値を有する。“On”は、分岐予測を使用することを示し、“Off”は、分岐予測を使用しないことを示す。0番目の設定値は“On”であり、1番目の設定値は“Off”である。
【0083】
6番目の動作パラメータは、プリフェッチを使用するか否かを示し、0番目~3番目(n=3)の設定値を有する。HWは、ハードウェアプリフェッチを表し、SWは、ソフトウェアプリフェッチを表す。“On”は、プリフェッチを使用することを示し、“Off”は、プリフェッチを使用しないことを示す。例えば、0番目の設定値は、HW及びSWについて“On”である。
【0084】
制御プロセッサ414は、データレジスタ804が記憶しているj番目の動作パラメータのi番目の設定値を選択して、コア411-1~コア411-3又はキャッシュメモリ412へ出力する。そして、コア411-1~コア411-3又はキャッシュメモリ412は、動作を停止することなく、動作パラメータを制御プロセッサ414から出力される設定値に変更する。
【0085】
次に、制御プロセッサ414は、性能カウンタ431-1~性能カウンタ431-3に対して性能情報を要求し、性能カウンタ431-1~性能カウンタ431-3から出力される性能情報を取得して、性能レジスタ802に格納する。そして、制御プロセッサ414は、性能カウンタ431-1~性能カウンタ431-3の性能情報の統計値を求めて、Xに設定する(ステップ1006)。統計値としては、平均値、中央値等が用いられる。
【0086】
次に、制御プロセッサ414は、電力モニタ413に対して消費電力を要求し、電力モニタ413から出力される消費電力を取得して、消費電力レジスタ803に格納する。そして、制御プロセッサ414は、消費電力レジスタ803が記憶する消費電力を、Yに設定する(ステップ1007)。
【0087】
次に、制御プロセッサ414は、XをYで除算することで、消費電力当たりの性能を求めて、E[i][j]に設定する(ステップ1008)。そして、制御プロセッサ414は、E[i][j]をデータレジスタ804に格納する。
【0088】
次に、制御プロセッサ414は、iを1だけインクリメントして(ステップ1009)、ステップ1004以降の処理を繰り返す。
【0089】
iがnを超えた場合(ステップ1004,YES)、制御プロセッサ414は、データレジスタ804が記憶しているE[0][j]~E[n][j]の最大値を、MAX[j]に設定する(ステップ1010)。そして、制御プロセッサ414は、MAX[j]と、MAX[j]に対応するiの値とを、データレジスタ804に格納する。
【0090】
次に、制御プロセッサ414は、iに0を設定し(ステップ1011)、jを1だけインクリメントして(ステップ1012)、ステップ1003以降の処理を繰り返す。
【0091】
jがmを超えた場合(ステップ1003,YES)、制御プロセッサ414は、jに0を設定し(ステップ1013)、jとmを比較する(ステップ1014)。jがm以下である場合(ステップ1014,NO)、制御プロセッサ414は、j番目の動作パラメータに、MAX[j]に対応する設定値を設定する制御を行う(ステップ1015)。このとき、制御プロセッサ414は、データレジスタ804が記憶しているiの値を用いて、MAX[j]に対応する設定値を選択する。
【0092】
制御プロセッサ414は、MAX[j]に対応する設定値を、コア411-1~コア411-3又はキャッシュメモリ412へ出力する。そして、コア411-1~コア411-3又はキャッシュメモリ412は、動作を停止することなく、動作パラメータを制御プロセッサ414から出力される設定値に変更する。
【0093】
次に、制御プロセッサ414は、jを1だけインクリメントして(ステップ1016)、ステップ1014以降の処理を繰り返す。jがmを超えた場合(ステップ1014,YES)、制御プロセッサ414は、処理を終了する。
【0094】
ステップ1015の処理により、例えば、
図11の動作パラメータが次のような設定値に設定される。
【0095】
動作周波数:1.6GHz
SIMD幅:128bit
ラストレベルキャッシュサイズ:16MB
メモリスループット:128GB/sec
パイプライン:EXA On,EXB On,FLA On,FLB On,EAGA On,EAGB On
分岐予測:On
プリフェッチ:HW On,SW Off
【0096】
図12は、
図9のステップ910における第2の動作パラメータ探索処理の例を示すフローチャートである。
図12の動作パラメータ探索処理では、0番目~m番目の動作パラメータのうち、ユーザにより指定された特定の動作パラメータについて、最適な設定値が探索される。
【0097】
まず、制御プロセッサ414は、変数X、変数Y、変数E[i](i=0~n)、及び変数MAXに0を設定する(ステップ1201)。Xは、プロセッサ311の性能を表し、Yは、プロセッサ311の消費電力を表す。制御変数iは、特定の動作パラメータのi番目の設定値を表す。E[i]は、特定の動作パラメータにi番目の設定値が設定された場合の消費電力当たりの性能を表し、MAXは、E[0]~E[n]の最大値を表す。
【0098】
次に、制御プロセッサ414は、iに0を設定し(ステップ1202)、iとnを比較する(ステップ1203)。iがn以下である場合(ステップ1203,NO)、制御プロセッサ414は、特定の動作パラメータにi番目の設定値を設定する制御を行う(ステップ1204)。
【0099】
ステップ1205及びステップ1206の処理は、
図10Aのステップ1006及びステップ1007の処理と同様である。次に、制御プロセッサ414は、XをYで除算することで、消費電力当たりの性能を求めて、E[i]に設定する(ステップ1207)。そして、制御プロセッサ414は、E[i]をデータレジスタ804に格納する。
【0100】
次に、制御プロセッサ414は、iを1だけインクリメントして(ステップ1208)、ステップ1203以降の処理を繰り返す。
【0101】
iがnを超えた場合(ステップ1203,YES)、制御プロセッサ414は、データレジスタ804が記憶しているE[0]~E[n]の最大値を、MAXに設定する(ステップ1209)。そして、制御プロセッサ414は、MAXと、MAXに対応するiの値とを、データレジスタ804に格納する。
【0102】
次に、制御プロセッサ414は、特定の動作パラメータに、MAXに対応する設定値を設定する制御を行う(ステップ1210)。このとき、制御プロセッサ414は、データレジスタ804が記憶しているiの値を用いて、MAXに対応する設定値を選択する。
【0103】
例えば、特定の動作パラメータがSIMD幅である場合、プロセッサ311により実行されるプログラムの性質によっては、SIMD幅を増加させても性能が向上しないことがある。この場合、SIMD幅の増加は消費電力の増加に繋がるため、SIMD幅を減少させることで、消費電力当たりの性能が向上する可能性がある。ステップ1210の処理により、SIMD幅は、例えば、256bitに設定される。
【0104】
なお、制御プロセッサ414の代わりに、コア411-1~コア411-3の何れかが
図9の制御処理を行うことで、プロセッサ311の動作パラメータを動的に変更することも可能である。
【0105】
図2の情報処理装置201及び
図3の情報処理装置301の構成は一例に過ぎず、情報処理装置の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、
図3の情報処理装置301は、入力装置、出力装置、又は通信装置を含んでいてもよい。
【0106】
図1のプロセッサ101と
図4及び
図5のプロセッサ311の構成は一例に過ぎず、情報処理装置の構成又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、
図4及び
図5のプロセッサ311において、コア411-1~コア411-3の何れかが
図9の制御処理を行う場合は、制御プロセッサ414を省略することができる。
【0107】
図6の性能カウンタ431-p及び
図7の電力モニタ413の構成は一例に過ぎず、情報処理装置の構成又は条件に応じて、一部の構成要素を省略又は変更してもよい。
図8の制御プロセッサ414の構成は一例に過ぎず、情報処理装置の構成又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【0108】
図9、
図10A、
図10B、及び
図12のフローチャートは一例に過ぎず、情報処理装置の構成又は条件に応じて、一部の処理を省略又は変更してもよい。
図11に示した動作パラメータは一例に過ぎず、情報処理装置の構成又は条件に応じて、一部の動作パラメータを省略又は変更してもよい。
【0109】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0110】
図2乃至
図12を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
演算処理部を備える情報処理装置であって、
前記演算処理部は、
前記演算処理部の消費電力を測定する電力測定部と、
前記演算処理部の性能を測定する性能測定部と、
前記演算処理部によりプログラムが実行されている間に測定された前記演算処理部の消費電力に基づいて、前記演算処理部の電力効率の低下を検出する検出部と、
前記電力効率の低下が検出された場合、前記演算処理部の動作パラメータを変更しながら前記演算処理部に前記プログラムを実行させ、前記動作パラメータを変更しながら前記プログラムが実行されている間に測定された前記演算処理部の消費電力及び性能に基づいて、前記動作パラメータの設定値を決定する決定部と、
を含むことを特徴とする情報処理装置。
(付記2)
前記動作パラメータは、前記演算処理部のリソースのサイズを示すパラメータであることを特徴とする付記1記載の情報処理装置。
(付記3)
前記演算処理部のリソースのサイズを示すパラメータは、シングルインストラクション・マルチプルデータ幅、ラストレベルキャッシュサイズ、又はメモリスループットを示すパラメータであることを特徴とする付記2記載の情報処理装置。
(付記4)
前記動作パラメータは、前記演算処理部のリソースを使用するか否かを示すパラメータであることを特徴とする付記1記載の情報処理装置。
(付記5)
前記演算処理部のリソースを使用するか否かを示すパラメータは、パイプライン、分岐予測、又はプリフェッチを使用するか否かを示すパラメータであることを特徴とする付記4記載の情報処理装置。
(付記6)
前記検出部は、前記プログラムが実行されている間に前記演算処理部の動作周波数を所定値だけ低下させ、前記動作周波数を前記所定値だけ低下させた後に測定された前記演算処理部の消費電力が閾値よりも大きい場合、前記電力効率が低下したと判定することを特徴とする付記1乃至5の何れか1項に記載の情報処理装置。
(付記7)
前記決定部は、前記演算処理部の動作パラメータの複数の値各々を用いて前記プログラムが実行されている間に測定された前記演算処理部の消費電力に対する前記演算処理部の性能の比率を求め、前記複数の値のうち前記比率の最大値に対応する値を、前記設定値に決定することを特徴とする付記1乃至6の何れか1項に記載の情報処理装置。
(付記8)
演算処理部を備える情報処理装置における制御方法であって、
前記演算処理部によりプログラムが実行されている間に測定された前記演算処理部の消費電力に基づいて、前記演算処理部の電力効率の低下を検出し、
前記電力効率の低下が検出された場合、前記演算処理部の動作パラメータを変更しながら前記演算処理部に前記プログラムを実行させ、
前記動作パラメータを変更しながら前記プログラムが実行されている間に測定された前記演算処理部の消費電力及び性能に基づいて、前記動作パラメータの設定値を決定する、
ことを特徴とする制御方法。
(付記9)
前記動作パラメータは、前記演算処理部のリソースのサイズを示すパラメータであることを特徴とする付記8記載の制御方法。
(付記10)
前記演算処理部のリソースのサイズを示すパラメータは、シングルインストラクション・マルチプルデータ幅、ラストレベルキャッシュサイズ、又はメモリスループットを示すパラメータであることを特徴とする付記9記載の制御方法。
(付記11)
前記動作パラメータは、前記演算処理部のリソースを使用するか否かを示すパラメータであることを特徴とする付記8記載の制御方法。
(付記12)
前記演算処理部のリソースを使用するか否かを示すパラメータは、パイプライン、分岐予測、又はプリフェッチを使用するか否かを示すパラメータであることを特徴とする付記11記載の制御方法。
(付記13)
前記演算処理部の電力効率の低下を検出する処理は、前記プログラムが実行されている間に前記演算処理部の動作周波数を所定値だけ低下させる処理と、前記動作周波数を前記所定値だけ低下させた後に測定された前記演算処理部の消費電力が閾値よりも大きい場合、前記電力効率が低下したと判定する処理とを含むことを特徴とする付記8乃至12の何れか1項に記載の制御方法。
(付記14)
前記動作パラメータの設定値を決定する処理は、前記演算処理部の動作パラメータの複数の値各々を用いて前記プログラムが実行されている間に測定された前記演算処理部の消費電力に対する前記演算処理部の性能の比率を求める処理と、前記複数の値のうち前記比率の最大値に対応する値を、前記設定値に決定する処理とを含むことを特徴とする付記8乃至13の何れか1項に記載の制御方法。
【符号の説明】
【0111】
101、311 プロセッサ
111-1~111-3、411-1~411-3 コア
112、123-1~123-3、412、423-1~423-3 キャッシュメモリ
121-1~121-3、421-1~421-3 命令制御部
122-1~122-3、422-1~422-3 実行部
131-1~131-3、431-1~431-3 性能カウンタ
201、301 情報処理装置
211 演算処理部
221 電力測定部
222 性能測定部
223 検出部
224 決定部
312 メモリ
413 電力モニタ
414 制御プロセッサ
601 比較器
602 加算器
603 カウントレジスタ
604 イベントレジスタ
701 計算回路
702 係数レジスタ
801 ステータスレジスタ
802 性能レジスタ
803 消費電力レジスタ
804 データレジスタ