(57)【要約】【課題】マルチコアプロセッサにおいて、プロセッサコアごとの電力消費を制御することが難しい、と言う問題を解決すること。【解決手段】複数のプロセッサコアを有するマルチコアプロセッサにおいて、前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出するよう構成されている。【選択図】図２
2016189111.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、命令に応じた処理を実行する際の消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出するよう構成されている、
マルチコアプロセッサ。
【請求項２】
請求項１に記載のマルチコアプロセッサにおいて、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示している、
マルチコアプロセッサ。
【請求項３】
請求項１又は２に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出するよう構成されている、
マルチコアプロセッサ。
【請求項４】
請求項１乃至３の何れかに記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行うよう構成されている、
マルチコアプロセッサ。
【請求項５】
請求項４に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身に供給される供給エネルギーから自身が算出した前記消費エネルギーを減算することで、命令を処理する際に消費可能な電荷を蓄積する蓄電器に蓄積されている蓄積エネルギー量を算出し、当該算出した蓄積エネルギー量に基づいて各々新規の命令発行の制御を行うよう構成されている、
マルチコアプロセッサ。
【請求項６】
請求項５に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記消費エネルギーに基づいて前記供給エネルギーを制御するよう構成されている、
マルチコアプロセッサ。
【請求項７】
請求項６に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記消費エネルギーに基づいて算出される、プロセッサコアにて消費することが許容される許容電力量と、プロセッサコアごとに予め割り当てられている供給量である割当電力量と、のうち小さい値を持つ電力量が前記供給エネルギーとなるように制御する
マルチコアプロセッサ。
【請求項８】
複数のプロセッサコアを有するマルチコアプロセッサにおいて実行される情報処理方法であって、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、を取得し、取得した前記発行命令情報と前記電力消費情報とに基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出する、
情報処理方法。
【請求項９】
請求項８に記載の情報処理方法であって、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示しており、
前記各プロセッサコアは、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出する、
情報処理方法。
【請求項１０】
請求項８又は９に記載の情報処理方法であって、
前記各プロセッサコアは、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行う、
情報処理方法。
【請求項１１】
マルチコアプロセッサが有する複数のプロセッサコアのそれぞれに、
自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出させるための、
プログラム。
【請求項１２】
請求項１１に記載のプログラムであって、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示しており、
前記各プロセッサコアに、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出させる、
プログラム。
【請求項１３】
請求項１１又は１２に記載のプログラムであって、
前記各プロセッサコアに、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行わせるための、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサ、情報処理方法、プログラム、に関する。
【背景技術】
【０００２】
消費電力との兼ね合いから、全てのトランジスタを同時に動作させることができないという、いわゆるダークシリコン問題が知られている。
【０００３】
上記問題のため、電子回路においては、必要に応じて回路の動作の抑制を行うことが必要となる場合がある。つまり、回路のすべてを同時に動作すると過剰な電力を消費してしまい誤動作をするおそれがあるため、必要に応じて回路の動作を抑制することで、過大な電力を消費することを防ぐことが必要となる場合があった。
【０００４】
このような回路の動作を抑止するための技術の一つとして、例えば、特許文献１が知られている。特許文献１には、命令を発行する間に消費された電力に関する電力情報を累積する電力累積手段と、累積した電力情報と所定の閾値とを比較する比較部と、さらなる命令の発行を阻止する制御部と、を備えるプロセッサが記載されている。特許文献１によると、制御部は、累積した電力情報が閾値を超えた場合に、さらなる命令の発行を阻止することになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−５１８３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のプロセッサコアを１つのパッケージに集積したマルチコアプロセッサが知られている。マルチコアプロセッサにおいては各プロセッサコアで演算処理が行われる。従って、各プロセッサコアでは、プロセッサコアごとに行われる演算処理に応じて、それぞれのプロセッサコアで電力が消費されることになる。そのため、マルチコアプロセッサにおいては、特許文献１に記載のようにプロセッサの制御を行うのではなく、プロセッサコア毎に電力消費を制御することが好ましいと考えられる。
【０００７】
しかしながら、大規模な共有キャッシュなどを有するマルチコアプロセッサでは、１つの動作がレジスタ・演算器・キャッシュメモリ・外部メモリなどの複数の部品に作用する。そのため、直接的に消費電力を計測しようとすると巨大な情報収集網が必要となってしまい多大なコストがかかるおそれがあった。このため、各プロセッサコアで共有される部分を含む消費電力を計測することは難しかった。また、仮に情報収集網を実現したとしても、共有キャッシュなどの共有資源の消費電力を各コアに振り分けることは非常に難しく、コア毎に消費した電力を計測することは難しかった。以上の問題のため、プロセッサコアごとの電力消費を制御することは難しい、という問題が生じていた。
【０００８】
このように、マルチコアプロセッサにおいて、プロセッサコアごとの電力消費を制御することが難しい、という問題が生じていた。
【０００９】
そこで、本発明の目的は、マルチコアプロセッサにおいて、プロセッサコアごとの電力消費を制御することが難しい、と言う問題を解決する電子回路を提供することにある。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため本発明の一形態であるマルチコアプロセッサは、
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、命令に応じた処理を実行する際の消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出するよう構成されている、
という構成を採る。
【００１１】
また、本発明の他の形態である情報処理方法は、
複数のプロセッサコアを有するマルチコアプロセッサにおいて実行される情報処理方法であって、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、を取得し、取得した前記発行命令情報と前記電力消費情報とに基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出する、
という構成を採る。
【００１２】
また、本発明の他の形態であるプログラムは、
マルチコアプロセッサが有する複数のプロセッサコアのそれぞれに、
自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出させるためのプログラムである。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、マルチコアプロセッサにおいて、プロセッサコアごとの電力消費を制御することが難しい、という問題を解決するマルチコアプロセッサを提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るマルチコアプロセッサの構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態に係るプロセッサコアの構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態に係る命令発行レート決定部の構成の一例を示すブロック図である。
【図４】本発明の第１の実施形態に係るプロセッサコアの動作の一例を示すフローチャートである。
【図５】本発明の第１の実施形態に係るプロセッサコアの動作の一例を示すフローチャートである。
【図６】本発明の第１の実施形態に係るプロセッサコアが有する命令発行レート決定部が蓄積エネルギー量を算出する際の動作の一例を示すフローチャートである。
【図７】本発明の第１の実施形態に係るプロセッサコアが有する命令発行レート決定部が消費エネルギー情報を受信してから最小値選択論理が電力量を選択するまでの動作の一例を示すフローチャートである。
【図８】コンデンサを有する回路におけるコンデンサに蓄積されている電荷と消費電力との関係の一例を示すグラフである。
【図９】コンデンサを有する回路におけるコンデンサに蓄積されている電荷と消費電力との関係の一例を示すグラフである。
【図１０】コンデンサを有する回路におけるコンデンサに蓄積されている電荷と消費電力との関係の一例を示すグラフである。
【図１１】コンデンサを考慮しない場合の制御の一例を示すグラフである。
【図１２】本発明の第２の実施形態における電子回路の構成の概略を示す概略ブロック図である。
【図１３】本発明の第３の実施形態におけるマルチコアプロセッサの構成の概略を示す概略ブロック図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
本発明の第１の実施形態について、図１乃至図１１を参照して説明する。図１は、マルチコアプロセッサ１の構成の一例を示すブロック図である。図２は、プロセッサコア２の構成の一例を示すブロック図である。図３は、命令発行レート決定部２５３の構成の一例を示すブロック図である。図４、図５は、プロセッサコア２の動作の一例を示すフローチャートである。図６は、命令発行レート決定部２５３が蓄積エネルギー量を算出する際の動作の一例を示すフローチャートである。図７は、命令発行レート決定部２５３が消費エネルギー情報を受信してから最小値選択論理２５３５が電力量を選択するまでの動作の一例を示すフローチャートである。図８乃至図１１は、コンデンサに蓄積されている電荷と消費電力との関係の一例を示すグラフである。
【００１６】
本発明の第１の実施形態では、電力の上限をプロセッサコア２毎に設定することが出来るマルチコアプロセッサ１（電子回路）について説明する。後述するように、本実施形態における各プロセッサコア２は、発行する命令に基づいて、当該命令に応じた演算処理を行う際に消費するエネルギー（消費エネルギー）を算出する。また、各プロセッサコア２は、算出した消費エネルギーと、プロセッサコア２に供給されるエネルギー（供給エネルギー）と、に基づいて、チップ内外のコンデンサ（蓄電器）に蓄えられているエネルギーである蓄積エネルギー量を算出する。そして、各プロセッサコア２は、コンデンサに蓄えられているエネルギーを考慮した上で、それぞれのプロセッサコア２で行われる新規の命令の発行の抑制などを行う。これにより、各プロセッサコア２は、プロセッサコア２ごとに電力の上限を設定することになる。
【００１７】
なお、以下においては、説明を簡単にするため、コンデンサの蓄積電荷が０になった場合に誤作動をするものとする。しかしながら、物理現象としては、回路に供給される電圧が１０％程度低下すると誤作動をする可能性があるものと考えられる。そのため、誤作動をしない範囲では、電子回路（プロセッサコア２）周辺のコンデンサに蓄積されている電荷の１０％程度が変化することを想定すればよいことになる。
【００１８】
従って、以下においては、電荷の２乗に比例するコンデンサの蓄積エネルギーなどにおいても線形なものとして計算に利用することとする。なぜならば、ある程度小さい数値ｘにおいて（１＋ｘ）の２乗は、ｘの２乗が十分に小さいため、１＋２ｘとして扱えるためである。また、以下においては、同様の理由により、コンデンサに蓄積された電荷をそのままエネルギーとして計算に利用することとする。
【００１９】
マルチコアプロセッサ１は、図示しない抵抗やコンデンサなどを有しており、演算処理を行うことが出来るよう構成されている。図１を参照すると、本実施形態におけるマルチコアプロセッサ１は、複数のプロセッサコア２−１、２−２、…、２−ｍ（以下、特に区別しない場合はプロセッサコア２とする）と、共有キャッシュ３と、外部Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）接続部４と、を有している。
【００２０】
プロセッサコア２は、演算処理を行う回路である。プロセッサコア２は、オンチップネットワーク５を介して、共有キャッシュ３と、外部Ｉ／Ｏ接続部４と、と接続されている。
【００２１】
共有キャッシュ３は、各プロセッサコア２から共有される記憶装置である。共有キャッシュ３は、マルチコアプロセッサ１の外部のメモリである外部メモリ３１と接続されている。外部メモリ３１は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの半導体メモリである。なお、外部メモリ３１は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＮＡＮＤフラッシュメモリなどの記憶素子であっても構わない。
【００２２】
外部Ｉ／Ｏ接続部４は、外部Ｉ／Ｏ４１と接続されている。外部Ｉ／Ｏ４１は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓである。外部Ｉ／Ｏ４１は、ＰＣＩ  Ｅｘｐｒｅｓｓ以外であっても構わない。
【００２３】
図２は、プロセッサコア２の構成の一例を示す図である。図２を参照すると、プロセッサコア２は、例えば、命令フェッチ・デコード部２１と、命令スケジューリング部２２と、複数の命令実行部２３−１、２３−２、…、２３−ｍ（以下、特に区別しない場合は命令実行部２３とする）と、外部部品接続部２４と、命令発行制限部２５と、を有している。
【００２４】
命令フェッチ・デコード部２１は、主記憶装置（図示しない）から命令情報を読み出し、当該読み出した命令情報を解析する。そして、命令フェッチ・デコード部２１は、解析した命令情報を命令スケジューリング部２２に渡す。このように、命令フェッチ・デコード部２１が有している機能は、一般的なものである。そのため、命令フェッチ・デコード部２１の詳細な説明は省略する。
【００２５】
命令スケジューリング部２２は、命令実行部２３を監視して、命令実行部２３に命令情報を送信する。例えば、命令スケジューリング部２２は、受信した命令情報に基づいて命令実行部２３を監視して、先行する命令の実行の完了を監視する。そして、命令スケジューリング部２２は、準備のできた命令を命令実行部２３に送信する。
【００２６】
また、命令スケジューリング部２２は、命令実行部２３に命令情報を送信する際に、当該命令情報と等価な情報である発行命令情報を命令発行制限部２５に送信する。後述するように、命令発行制限部２５は、受信した発行命令情報に基づいて、所定の条件を満たす場合に、命令スケジューリング部２２に対して命令発行制限指示を送信することになる。そして、命令発行制限指示を受信した命令スケジューリング部２２は、当該命令発行制限指示の内容に応じて、新規の命令発行のレートを低下したり、新規の命令発行を停止したりする。
【００２７】
命令実行部２３は、演算器・レジスタファイル・プロセッサコア固有のキャッシュメモリなどを有している。命令実行部２３は、上記各構成を用いて、命令スケジューリング部２２から受信した命令情報に基づいて、命令の実行を行うことになる。
【００２８】
なお、本実施形態では、プロセッサコア２は複数の命令実行部２３を有しているとした。しかしながら、プロセッサコア２が有する命令実行部２３は１つであっても構わない。また、プロセッサコア２が有する複数の命令実行部２３の機能は等価でなくても構わない。複数の命令実行部２３は、例えば、ある命令実行部２３が加算命令は実行できるがメモリアクセス命令は実行できないように構成されている一方で、別の命令実行部２３は、メモリアクセス命令は実行できるが分岐命令は実行できない、というように構成されていても構わない。
【００２９】
外部部品接続部２４は、オンチップネットワーク５に接続されている。外部部品接続部２４は、オンチップネットワーク５を介して、プロセッサコア２の外部に配置されている共有キャッシュ３や外部メモリ３１と接続されることになる。
【００３０】
命令発行制限部２５は、上記のように、命令スケジューリング部２２から発行命令情報を受信する。そして、命令発行制限部２５は、発行命令情報に基づいて、所定の条件を満たす場合に、命令スケジューリング部２２に対して命令発行制限指示を送信する。
【００３１】
図２を参照すると、命令発行制限部２５は、例えば、電力制御プログラム２５１と消費エネルギー推論部２５２と命令発行レート決定部２５３とから構成されている。
【００３２】
電力制御プログラム２５１は、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）などのデバックインターフェースから電力推論のための電力統計情報（電力消費情報）や、各プロセッサコア２それぞれに対する電力制限情報を受け取り、消費エネルギー推論部２５２や命令発行レート決定部２５３を制御する。
【００３３】
電力統計情報（電力消費情報）は、命令に応じた装置の消費電力の変化（命令を処理する際に生じる消費電力の変化）を示す情報である。共有キャッシュ３などを有するマルチコアプロセッサ１では、一つの動作（たとえば、ロード命令や加算命令の実行）がレジスタ、演算器、キャッシュメモリ（共有キャッシュ３）、外部メモリ３１などの複数の部品に作用することになる。そこで、本実施形態においては、電力統計情報は、少なくとも、プロセッサコア２と、当該プロセッサコア２が命令を実行する際に利用する共有部分（共有メモリ３や外部メモリ３１など）と、の消費電力の変化を示す情報であるものとする。電力統計情報は、例えば、上記共有部分を含む装置全体の消費電力の変化を観察することで取得される。電力統計情報は、消費エネルギー推論部２５２で消費エネルギーを算出する際に用いられることになる。
【００３４】
電力制限情報は、プロセッサコア２ごとに予め割り当てられている供給量（割当電力量）を示す情報である。電力制限情報は、一定時間ごとにプロセッサコア２に供給される電力量の最大値を示している。電力制限情報は、命令発行レート決定部２５３で供給エネルギーを選択する際に用いられることになる。
【００３５】
なお、電力制御プログラム２５１に対する電力統計情報の設定や電力制限情報の設定を行うためのレジスタは、メモリ空間上にマップして、オンチップネットワーク５を介してアクセス可能なよう構成しても構わない。
【００３６】
消費エネルギー推論部２５２は、命令スケジューリング部２２から受信した発行命令情報と、電力制御プログラム２５１から取得した電力統計情報とに基づいて、プロセッサコア２が命令の実行によって消費するエネルギー（消費エネルギー）を算出する。そして、消費エネルギー推論部２５２は、算出結果（消費エネルギー）を示す消費エネルギー情報を命令発行レート決定部２５３に送信する。
【００３７】
命令発行レート決定部２５３は、消費エネルギー推論部２５２から受信した消費エネルギー情報と、電力制御プログラム２５１から取得した電力制限情報とに基づいて、コンデンサに蓄えられている蓄積エネルギー量を算出する。そして、命令発行レート決定部２５３は、蓄積エネルギー量が所定の条件を満たす場合に、命令スケジューリング部２２に対して命令発行制限指示を出力する。命令発行レート決定部２５３が命令スケジューリング部２２に対して命令発行制限指示を送信することで、新規の命令の実施が制限され、プロセッサコア２が消費する消費電力が抑えられることになる。
【００３８】
なお、命令発行レート決定部２５３が送信する命令発行制限指示は、命令スケジューリング部２２に対する様々な指示を含むよう構成することが出来る。例えば、命令発行レート決定部２５３は、命令スケジューリング部２２に対して命令発行制限指示を送信することで、新規の命令発行のレートを低下するよう指示（スロットリング）したり、新規の命令発行を停止したりするよう指示することが出来る。
【００３９】
以下、命令発行制限部２５の詳細について説明する。まず、消費エネルギー推論部２５２について詳細に説明する。
【００４０】
消費エネルギー推論部２５２は、上記のように、発行命令情報と電力統計情報とに基づいて、発行命令情報が示す命令で消費するエネルギーである消費エネルギーを算出する。消費エネルギー推論部２５２は、発行命令情報に含まれる様々な情報を利用して消費エネルギーを推論する。
【００４１】
消費エネルギー推論部２５２は、例えば、加算・メモリアクセスなどを示す演算の種類（Ｉ）や、読出しを行うレジスタファイルの個数（Ｒｎ）、演算回数（Ｎ）などを用いて消費するエネルギーを算出する。
【００４２】
なお、消費エネルギー推論部２５２は、上記以外の情報（例えば、書き込みを行うレジスタの個数など）を利用して消費エネルギーを算出するように構成しても構わない。また、演算回数（Ｎ）は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）命令での演算幅、ベクトルプロセッサにおけるベクトル命令でのベクトル長に相当することになる。
【００４３】
上記情報は、それによって消費されるエネルギーが変わるために必要とされることになる。例えば、１命令で複数の演算を実施するＳＩＭＤ命令は、１命令で１演算のみを実行する通常の命令と比較して、多くのエネルギーを消費すると考えられる。また、同じ演算命令でも２オペランドをレジスタファイルから読み出す場合と、１オペランドのみをレジスタファイルから読み出し、もう一方を命令で指定された即値を利用する場合と、では、レジスタファイルの参照の増減がある。そのため、その命令実行で消費するエネルギーが異なるものと考えられる。そこで、消費エネルギー推論部２５２は、例えば、上記のような情報を用いて、消費エネルギーを算出することになる。
【００４４】
また、消費エネルギー推論部２５２は、電力統計情報を用いて、命令種別ごとに消費されるエネルギー（Ｅｉ）とレジスタの読み出しで消費されるエネルギー（Ｅｉｒ）とを事前に算出しておく。
【００４５】
そして、消費エネルギー推論部２５２は、上記のような演算の種類（Ｉ）、読出しを行うレジスタファイルの個数（Ｒｎ）、演算回数（Ｎ）、命令種別ごとに消費されるエネルギー（Ｅｉ）、レジスタの読み出しで消費されるエネルギー（Ｅｉｒ）を用いて、消費するエネルギーを算出する。具体的には、消費エネルギー推論部２５２は、例えば、以下の式に基づいて消費するエネルギーを算出する。
命令により消費するエネルギー（消費エネルギー）＝Ｅｉ×Ｎ＋Ｅｉｒ×Ｒｎ×Ｎ
【００４６】
なお、本実施形態においては、消費エネルギー推論部２５２が算出した消費エネルギーは、整数値で表現するものとする。例えば、消費エネルギー推論部２５２は、数値「１」に１ｐＪを対応させて表現する。このように、消費エネルギー推論部２５２が表現する整数１は、特定のエネルギー量を表現する。なお、消費エネルギー推論部２５２は、例えば、数値「１」を３ｐＪに対応させるなど、上記例示した以外の対応付けを行っても構わない。
【００４７】
また、消費エネルギー推論部２５２が算出する命令種別ごとに消費されるエネルギー（Ｅｉ）には、その命令で動作する共有部の消費エネルギーも含まれるものとする。つまり、消費エネルギー推論部２５２は、例えば、ロード・ストア命令のようにオンチップネットワーク５、共有キャッシュ３へのアクセスが想定される命令に対しては、キャッシュメモリへのアクセスの割合などを考慮した確率的な重み付きのエネルギー値を算出することになる。
【００４８】
消費エネルギー推論部２５２は、例えば、上記のように消費エネルギーを算出する。そして、消費エネルギー推論部２５２は、算出した消費エネルギーを示す消費エネルギー情報を命令発行レート決定部２５３へと送信する。
【００４９】
続いて、命令発行レート決定部２５３について詳細に説明する。
【００５０】
図３は、命令発行レート決定部２５３の構成の一例である。図３を参照すると、命令発行レート決定部２５３は、エネルギー積算カウンタ２５３１と、消費電力履歴レジスタ２５３２（消費エネルギー情報記憶部）と、エネルギー積算時刻飽和カウンタ２５３３と、突入電流制限計算部２５３４（許容電力量算出部）と、最小値選択論理２５３５（供給エネルギー選択部）と、電力制限時刻飽和カウンタ２５３６と、エネルギー制限カウンタ２５３７（蓄積エネルギー量算出部）と、電力制限決定部２５３８（命令発行抑制部）と、を有している。
【００５１】
また、消費エネルギー推論部２５２から受信した消費エネルギー情報は、エネルギー積算カウンタ２５３１と、エネルギー制限カウンタ２５３７とで利用されることになる。また、電力制限プログラム２５１から取得した電力制限情報は、最小値選択論理２５３５で利用されることになる。
【００５２】
エネルギー積算カウンタ２５３１は、消費エネルギー情報が示す消費エネルギーの値を、消費エネルギー情報を受信するごとに加算する。つまり、エネルギー積算カウンタ２５３１は、消費エネルギーの積算値を算出する。
【００５３】
また、エネルギー積算カウンタ２５３１は、後述するエネルギー積算時刻飽和カウンタ２５３３からの指示に基づいて、一定時間ごとに、算出した消費エネルギーの積算値を消費電力履歴レジスタ２５３２にコピーする。そして、エネルギー積算カウンタ２５３１は、消費エネルギーの積算値をクリアする。以上のように、エネルギー積算カウンタ２５３１は、一定時間ごとの消費エネルギーの積算値を算出して、消費電力履歴レジスタ２５３２にコピーするよう構成されている。
【００５４】
消費電力履歴レジスタ２５３２は、エネルギー積算カウンタ２５３１からコピーされた消費エネルギーの積算値を積算消費エネルギー情報として所定回数分記憶する。消費電力履歴レジスタ２５３２は、例えば、エネルギー積算カウンタ２５３１からコピーされた３回分の積算消費エネルギー情報を記憶する。なお、消費電力履歴レジスタ２５３２は、１回以上の任意の回数分、蓄積消費エネルギー情報を記憶するよう構成することが出来る。
【００５５】
エネルギー積算時刻飽和カウンタ２５３３は、エネルギー積算カウンタ２５３１と消費電力履歴レジスタ２５３２に対するクリア指示、書き込み指示の制御を行う。エネルギー積算時刻飽和カウンタ２５３３は、一定時間ごとに、エネルギー積算カウンタ２５３１、消費電力履歴レジスタ２５３２に対する上記指示を行うよう構成されている。エネルギー積算時刻飽和カウンタ２５３３は、例えば、事前に設定された特定の値（Ｃ０）で初期化され、１サイクルに１ずつ減算される。そして、エネルギー積算時刻飽和カウンタ２５３３は、カウンタの値が０になるとクリア指示、書き込み指示を出力して、初期値Ｃ０に再度設定される。
【００５６】
上記説明した３つの部品（エネルギー積算カウンタ２５３１、消費電力履歴レジスタ２５３２、エネルギー積算時刻飽和カウンタ２５３３）の組み合わせで、一定時間に発生した消費エネルギーの積算値を求めることになる。ここで、電力は消費エネルギーの時間微分で表現される。そのため、消費電力履歴レジスタ２５３２に書き込まれた値は、過去の消費電力量を表現することになる。
【００５７】
突入電流制限計算部２５３４は、消費電力履歴レジスタ２５３２が記憶する積算消費エネルギー情報に基づいて、時間発展に伴う許容電力量（プロセッサコア２に流入することが許容される、つまり、プロセッサコア２が消費することが許容される電力量）を算出する。
【００５８】
具体的には、例えば、突入電流制限計算部２５３４は、消費電力履歴レジスタ２５３２が記憶する過去３回分の積算消費エネルギー情報の平均値に事前に定められた電力量を加算した値を算出することで、一定時間における許容電力量を算出する。そして、突入電流制限計算部２５３４は、算出した許容電力量を最小値選択論理２５３５へと送信する。
【００５９】
突入電流制限計算部２５３４が上記のように許容電力量を計算することで、例えば、直近の消費電力が１Ｗ程度であった場合には、たとえそのプロセッサコア２が１０Ｗの電力を利用できるように割り当てられていたとしても、次回は最大で２Ｗまでしか利用しない、という制御を行うことが出来るようになる。
【００６０】
なお、突入電流制限計算部２５３４は、消費電力履歴レジスタ２５３２が積算消費エネルギー情報を記憶していない場合などにおいても、予め定められた最低限の値を算出するよう構成することが出来る。また、突入電流制限計算部２５３４は、上記例示した以外の方法により許容電力量を算出するよう構成しても構わない。例えば、突入電流制限計算部２５３４は、積算消費エネルギー情報の平均値の２倍の値を許容電力量として算出するよう構成しても構わない。
【００６１】
最小値選択論理２５３５は、突入電流制限計算部２５３４から受信した許容電力量と、電力制御プログラム２５１から指示されたコア毎に割り当てられた電力制限情報と、のうち、より小さい電力量を供給エネルギーとして選択する。そして、最小値選択論理２５３５は、電力制限時刻飽和カウンタ２５３６の指示に基づいて、一定時間ごとに、選択した電力量（供給エネルギー）をエネルギー制限カウンタ２５３７に対して送信する。
【００６２】
電力制限時刻飽和カウンタ２５３６は、最小値選択論理２５３５に対して、選択した電力量をエネルギー制限カウンタ２５３７に送信するよう加算指示を送信する。電力制限時刻飽和カウンタ２５３６は、一定時間ごとに、上記指示を行うよう構成されている。電力制限時刻飽和カウンタ２５３６の具体的な構成は、例えば、既に説明したエネルギー積算時刻飽和カウンタ２５３３と同様である。
【００６３】
エネルギー制限カウンタ２５３７は、コンデンサに蓄積された電荷の量を表現する。例えば、コンデンサに蓄積されたエネルギーが尽きるまでプロセッサコア２は動作可能であると仮定すると、エネルギー制限カウンタ２５３７は、当該プロセッサコア２が消費可能な残りのエネルギー（蓄積エネルギー量）を表現することになる。
【００６４】
エネルギー制限カウンタ２５３７は、命令発行に伴う消費エネルギー情報を受け取ると、当該消費エネルギー情報に基づいた値をカウンタから減算する。つまり、エネルギー制限カウンタ２５３７は、命令発行に伴う消費エネルギーをカウンタから減算するよう構成されている。
【００６５】
また、エネルギー制限カウンタ２５３７は、一定時間ごとに最小値選択論理２５３５から電力量の値（供給エネルギー）を受け取って、カウンタに加算する。つまり、エネルギー制限カウンタ２５３７は、一定時間ごとに、そのコアで許容される消費エネルギーの値（つまり、そのコアに供給される供給エネルギーの値）を加算するよう構成されている。例えば、１Ｗの電力を消費できるプロセッサコア２では、１ｎｓごとに１ｎＪのエネルギーを消費することが出来る。そのため、エネルギー制限カウンタ２５３７は、最小値選択論理２５３５が選択した供給エネルギーに基づいて、例えば、１ｎｓごとに１ｎＪを表現するカウンタ値を加算することになる。
【００６６】
このように、エネルギー制限カウンタ２５３７は、消費エネルギーを示す減算項と、最小値選択論理２５３５が選択した電力量である供給エネルギーを示す加算項と、の２つを積算するように構成されている。減算項は、コンデンサから消費された電荷、あるいは、エネルギーに相当することになる。一方、加算項は、コンデンサに流入した電荷、あるいは、エネルギーに相当することになる。ここで、エネルギー保存の法則から、一度蓄えられた電荷は電力を消費しない限りその場にとどまるものと考えられる。そのため、エネルギー制限カウンタ２５３７は、コンデンサに蓄積されたエネルギーを表現するものと考えられる。
【００６７】
なお、上記の考え方から、流入する電荷の量と、流出する電荷の量と、を推論する任意の方式を本発明に活用することが考えられる。具体的には、例えば、流入する電流に対して、電源供給系のコンデンサ・コイル・配線抵抗の影響を考慮した式をたてて計算するといったことが考えられる。
【００６８】
また、エネルギー制限カウンタ２５３７は、上に有限なカウンタをとるものとする。つまり、加算処理で事前に設定された最大値を超える値になる場合には、エネルギー制限カウンタ２５３７には、最大値が格納されることになる。また、エネルギー制限カウンタ２５３７の上限値は、周辺のコンデンサに蓄積可能な電荷に相当するものとする。従って、エネルギー制限カウンタ２５３７のカウント値の分までは、バーストでのエネルギー消費が許容されることになる。
【００６９】
また、エネルギー制限カウンタ２５３７の値が負の方向にオーバーフローすることは、原理的に発生しないものと考えられる。そのため、上記場合が発生した場合には、故障が発生しているものと判断することが考えられる。
【００７０】
電力制限決定部２５３８は、エネルギー制限カウンタ２５３７のカウンタ値を監視する。そして、電力制限決定部２５３８は、エネルギー制限カウンタ２５３７のカウンタ値に基づいて、命令発行制限指示を出力する。例えば、電力制限決定部２５３８は、エネルギー制限カウンタ２５３７のカウンタ値が負の数値になった場合に、電力が既定の値を超えたと判断して、命令発行制限指示を出力する。これにより、上述したように、新規の命令の発行が制限されることになる。
【００７１】
なお、電力制限決定部２５３８は、例えば、１つ、又は、複数の制限閾値を予め記憶しておき、制限閾値とエネルギー制限カウンタ２５３７のカウンタ値との比較結果に基づいて、命令発行制限指示を出力するよう構成しても構わない。例えば、電力制限決定部２５３８は、エネルギー制限カウンタ２５３７のカウンタ値がある制限閾値１を下回った場合に、命令発行のレートを低下させる（例えば、カウンタ値が１０以下になった場合に、命令発行間隔を１０サイクルに変更する）命令発行制限指示を出力する。また、電力制限決定部２５３８は、エネルギー制限カウンタ２５３７のカウンタ値が制限閾値１よりも小さな閾値である制限閾値２を下回った場合に、命令発行を停止させる（例えば、カウンタ値が負になった場合に命令発行を禁止する）命令発行制限指示を出力する。電力制限決定部２５３８は、例えば、上記のように構成しても構わない。
【００７２】
また、上述したように、エネルギー制限カウンタ２５３７は、一定時間ごとに最小値選択論理２５３５から電力量の値（供給エネルギー）を受け取って、カウンタに加算するよう構成されている。そのため、電力制限決定部２５３８が命令発行制限指示を出力した後所定時間経過すると、エネルギー制限カウンタ２５３７のカウンタ値が増加して電力制限決定部２５３８が命令発行制限指示を出力する要因がなくなることになる。その結果、命令の発行が再開されることになる。
【００７３】
以上が、マルチコアプロセッサ１の構成の一例である。
【００７４】
なお、本実施形態においては、エネルギー積算カウンタ２５３１では、消費エネルギー情報に基づいて消費エネルギーの積算を行うとした。しかしながら、消費エネルギーが推論できる方法であれば、その他の方式を採用しても構わない。
【００７５】
例えば、エネルギー積算カウンタ２５３１は、エネルギー制限カウンタ２５３７に対して加算された供給電力量の総和を消費エネルギーとして加算するよう構成しても構わない。具体的には、例えば、エネルギー積算カウンタ２５３１は、エネルギー制限カウンタ２５３７に対して最小値選択論理２５３５で選択された電力量を加算する際に、以下の式で計算されるエネルギー値を積算するように構成することが出来る。
エネルギー積算カウンタへの加算値＝ＭＩＮ（ＭａｘＥｅ，Ｅｅ＋Ｅｐ）−Ｅｅ
なお、
Ｅｅ＝エネルギー制限カウンタ２５３７のカウンタ値
Ｅｐ＝最小値選択論理２５３５により選択された電力量
ＭａｘＥｅ＝エネルギー制限カウンタ２５３７の上限値
【００７６】
次に、プロセッサコア２の動作について説明する。図４で示すように、本実施形態におけるプロセッサコア２は、概ね、通常のプロセッサと同様の動作を行う。
【００７７】
つまり、図４を参照すると、命令フェッチ・デコード部２１が主記憶装置から命令情報を取得して、デコードする。そして、命令フェッチ・デコード部２１は、デコードした命令情報を命令スケジューリング部２２に渡す（ステップＳ１０１）。
【００７８】
続いて、命令スケジューリング部２２は、前後の命令との依存関係を確認して、命令実行部２３に対して命令情報を渡す（ステップＳ１０２）。その後、命令実行部２３では、受け取った命令情報に基づいて命令の実行が行われることになる（ステップＳ１０３）。
【００７９】
プロセッサコア２は、例えば、上記のように、概ね通常のプロセッサと同様の動作を行うことになる。ただし、本実施形態におけるプロセッサコア２は、以下の点で通常のプロセッサとは異なる動きを行う。
【００８０】
図５を参照すると、命令スケジューリング部２２は、命令実行部２３に対して命令情報を渡す際に、命令発行制限部２５に対して発行命令情報を送信する（ステップＳ２０１）。
【００８１】
続いて、命令発行制限部２５が発行命令情報を受信する。すると、命令発行制限部２５の消費エネルギー推論部２５２は、発行命令情報と、電力制限プログラム２５１から取得した電力統計情報と、に基づいて、消費エネルギーを算出する（ステップＳ２０２）。そして、消費エネルギー推論部２５２は、消費エネルギーを示す消費エネルギー情報を命令発行レート決定部２５３へと送信する。
【００８２】
その後、命令発行レート決定部２５３が消費エネルギー情報を受信する。すると、命令発行レート決定部２５３は、受信した消費エネルギー情報と電力制限プログラム２５１から取得した電力制限情報とに基づいて蓄積エネルギー量を算出する（ステップＳ２０３）。そして、命令発行レート決定部２５３は、算出した蓄積エネルギー量に基づいて命令発行制限指示を出力する（ステップＳ２０４）。
【００８３】
命令発行レート決定部２５３が出力した命令発行制限指示は、命令スケジューリング部２２へと送信される。そして、命令発行制限指示を受信した命令スケジューリング部２２は、受信した命令発行制限指示に基づいて、新規の命令の発行を制限することになる（ステップＳ２０５）。
【００８４】
以上のように、本実施形態におけるプロセッサコア２は、発行命令情報に基づいて消費エネルギーを算出し、算出した消費エネルギーに基づいて蓄積エネルギー量を算出する。そして、プロセッサコア２は、蓄積エネルギー量に基づいて、新規の命令の発行を制限する。
【００８５】
続いて、蓄積エネルギー量を算出する際の命令発行レート決定部２５３の動作について説明する。
【００８６】
図６を参照すると、命令発行レート決定部２５３のエネルギー制限カウンタ２５３７では、一定時間が経過するごとに（ステップＳ３０１、Ｙｅｓ）、最小値選択論理２５３５が選択した電力量が加算される（ステップＳ３０２）。一方で、エネルギー制限カウンタ２５３７では、消費エネルギー情報を受信するごとに（ステップＳ３０３、Ｙｅｓ）、当該消費エネルギー情報が示す消費エネルギーが減算されることになる（ステップＳ３０４）。
【００８７】
このように、蓄積エネルギー量は、一定時間ごとに加算される電力量（供給エネルギー）と、消費エネルギー情報を受信するごと（命令が発行されるごと）に減算される消費エネルギーと、に基づいて算出されることになる。
【００８８】
続いて、命令発行レート決定部２５３が消費エネルギー情報を受信してから最小値選択論理２５３５が電力量を選択するまでの動作について説明する。
【００８９】
図７を参照すると、命令発行レート決定部２５３が消費エネルギー情報を取得すると、エネルギー積算カウンタ２５３１が一定時間ごとの消費エネルギーの積算値を算出する（ステップＳ４０１）。そして、エネルギー積算カウンタ２５３１は、積算した消費エネルギーの積算値を積算消費エネルギー情報として消費電力履歴レジスタ２５３２に記憶する。
【００９０】
続いて、突入電流制限計算部２５３４が、消費電力履歴レジスタ２５３２に記憶されている積算消費エネルギー情報の平均値に予め定められた電力量を加算して許容電力量を算出する（ステップＳ４０２）。そして、突入電流制限計算部２５３４は、算出した許容電力量を最小値選択論理２５３５へ送信する。
【００９１】
許容電力量を受信した最小値選択論理２５３５では、許容電力量と電力制限情報との比較が行われる（ステップＳ４０３）。
【００９２】
最小値選択論理２５３５は、許容電力量が電力制限情報よりも大きい場合（ステップＳ４０３、Ｙｅｓ）には、電力制限情報が示す電力量を供給エネルギーとして選択する（ステップＳ４０４）。一方、最小値選択論理２５３５は、許容電力量が電力制限情報以下である場合（ステップＳ４０３、Ｎｏ）には、許容電力量を供給エネルギーとして選択する（ステップＳ４０５）。
【００９３】
上記のような動作により、最小値選択論理２５３５は、供給エネルギーを選択する。そして、最小値選択論理２５３５が選択した供給エネルギーは、一定時間ごとに、エネルギー制限カウンタ２５３７に加算されることになる（ステップＳ４０６）。
【００９４】
以上が、プロセッサコア２の動作についての説明である。
【００９５】
ここで、コンデンサを考慮した電子回路（プロセッサコア２）の誤動作の仕組み及びコンデンサを考慮した際の制御について説明する。
【００９６】
図８は、コンデンサを有する回路において、時刻３のときに消費電力が１０Ｗから定格（２０Ｗ）を上回る５０Ｗに増加し、そのまま５０Ｗ消費する動作率を保った場合のコンデンサへの蓄積電荷を表している。
【００９７】
図８の場合、時刻３、４、５、６では、コンデンサに蓄積されている電荷を利用することができる。そのため、電子回路は、コンデンサに蓄積された電荷を利用して正常に動作をすることが出来る。一方、時刻７では、コンデンサに蓄積された電荷が０になることになる。そのため、上記場合、時刻７の段階で電子回路は誤動作を起こすものと考えられる。
【００９８】
上記からすると、例えば図９で示すように、定格を超える電力の消費電力を利用した場合でも、コンデンサの電荷が尽きる前に定格の電力である２０Ｗに電力が戻ると、回路は誤動作しないですむことになる。すなわち、上記のようなコンデンサを考慮した上での制御を行うことで、誤動作を起こさずに一時的に定格を上回る電力を利用可能なよう制御することが可能となることになる。
【００９９】
上記制御は、動作が周期的で消費電力の多い時間と少ない時間とが交互に発生する場合に、より大きな効果を有するものと考えられる。
【０１００】
例えば、図１０で示すように、時刻３、４の間だけ消費電力が５０Ｗ必要な処理を考える。また、上記処理の後、１０Ｗで動作可能な低動作率期間があり、再び、５０Ｗ必要な処理を行う場合を想定する。
【０１０１】
この場合、コンデンサを考慮しているため、時刻４の段階ではコンデンサに十分な電荷が残っているため電力の制御を行う必要がないことになる。また、時刻３、４の間に消費された電荷は消費電力が１０Ｗの期間で回復する。そのため、再び５０Ｗ必要な処理を行う場合でも問題なく動作することになる。従って、上記場合においては、電力消費を抑える制御を行う必要はないことになる。
【０１０２】
一方、コンデンサを考慮しない場合、例えば図１１で示すように、定格２０Ｗで制御されることになるものと考えられる。この場合、図１０で示した時刻３、４で実施した処理が２０Ｗに制限されることになる。そのため、その処理は時刻８まで完了せず、後続の処理も遅延するといった事態が発生するものと考えられる。
【０１０３】
以上のように、コンデンサを考慮して電力消費を制御することで、不必要な制御を行うことなく、的確に電子回路の電力消費を制御することが出来る。
【０１０４】
このように、本実施形態におけるプロセッサコア２は、消費エネルギー推論部２５２と命令発行レート決定部２５３とを有している。また、命令スケジューリング部２２が命令発行制限部２５に対して発行命令情報を送信するよう構成されており、電力制御プログラム２５１が電力統計情報と電力制限情報とを取得するよう構成されている。このような構成により、命令発行制限部２５は、発行命令情報と電力統計情報とに基づいて、命令に応じた消費エネルギーを算出することが出来る。また、命令発行レート決定部２５３は、消費エネルギーと電力制限情報とに基づいて、蓄積エネルギー量を算出することが出来る。その結果、命令発行レート決定部２５３は、蓄積エネルギー量に基づいて、命令発行制限指示を送信することが出来る。これにより、プロセッサコア２は、チップ内外のコンデンサの蓄積電荷を考慮の上で電力消費を制限することが可能となり、例えば処理時間が十分に短い（コンデンサに蓄積した電力が尽きる前に処理が終了する）場合などに、定格を超えた電力を消費して高速に計算を完了する、などの制御を行うことが可能となる。つまり、不必要な制御を行うことなく、的確に電子回路の電力消費を制御することが可能となる。
【０１０５】
また、本実施形態におけるプロセッサコア２は、突入電流制限計算部２５３４と、最小値選択論理２５３５と、を有している。このような構成により、突入電流制限計算部２５３４は、消費エネルギーに基づいて許容電力量を算出することが出来る。また、最小値選択論理２５３５は、突入電流制限計算部２５３４が算出した許容電力量と電力制限情報が示す電力量とのうち小さい値を有する電力量を供給エネルギーとして選択することが出来る。その結果、例えば、直近の消費電力が１Ｗ程度であった場合には、たとえそのプロセッサコア２が１０Ｗの電力を利用できるように割り当てられていたとしても、次回は最大で２Ｗまでしか利用しない、という制御を行うことが出来るようになる。ここで、回路の消費電力が急激に変化すると、回路に流れる電流量が急激に変化するため、大きな電圧降下を引き起こし、誤作動を起こす可能性があるものと考えられる。そのため、上記のように最小値選択論理２５３５が許容電力量と電力制限情報が示す電力量とのうち小さい値を有する電力量を選択することで、電圧降下による誤作動の可能性を低減することが可能となる。
【０１０６】
また、上記誤動作の可能性を低減するためには、例えば、コンデンサの数を増やす、実装可能なトランジスタの数を制限する、といったことも考えられる。一方で、本願発明は、上記のように、突入電流制限計算部２５３４と、最小値選択論理２５３５と、を有しているため、上記のようなコンデンサ、トランジスタの調整を行うことなく誤作動の可能性を軽減することを可能としている。つまり、本実施形態におけるプロセッサコア２は、突入電流制限計算部２５３４と、最小値選択論理２５３５と、を有することで、過剰にコンデンサの数を増やしたり、トランジスタの数を制限したりすることなく、誤作動を行う可能性を低減することを可能としていることになる。
【０１０７】
また、本実施形態におけるマルチコアプロセッサ１は、複数のプロセッサコア２を有している。そして、各プロセッサコア２は、自身が発行した命令に応じた発行命令情報と電力統計情報とに基づいて、消費エネルギーを算出するように構成されている。このような構成により、マルチコアプロセッサ１が有する各プロセッサコア２は、各自が発行した命令に基づいて各々の消費エネルギーを管理することが出来ることになる。その結果、プロセッサコア２ごとに電力消費を制限することが可能となる。
【０１０８】
また、プロセッサコア２が利用する電力統計情報は、少なくとも、演算処理を行う際のコア自身、及び、演算処理を実施する際に利用する共有部分、の消費電力の変化を示している。また、プロセッサコア２は、上記のように、自身が発行した命令と電力統計情報とを用いて、消費エネルギーを算出するように構成されている。このような構成により、プロセッサコア２は、演算処理を行う際に利用する共有キャッシュ３や外部メモリ３１などの共有部分を含む各部品に対する消費電力情報の収集網を設けることなく、発行命令情報に基づいて消費エネルギーを算出することが可能となる。従って、上記構成により、消費電力情報の収集網を設ける際に必要となるコストを削減することが可能となることになる。また、上記のように、電力統計情報は、共有部分の電力の変化も表している。そのため、各プロセッサコア２は、各プロセッサコア２が演算処理を行う際に利用する共有部分などの電力消費も加味した上で、電力消費の制御を行うことが可能となる。その結果、より的確な電力消費の制御を行うことが可能となる。
【０１０９】
なお、本実施形態においては、消費エネルギー推論部２５２は、命令の種別、読み書きするレジスタの個数、ベクトル長などを用いて消費エネルギーを算出するとした。しかしながら、消費エネルギー推論部２５２は、上記以外の値を用いて消費エネルギーを算出するよう構成することが出来る。例えば、消費エネルギー推論部２５２は、プレディケーション（マスク）の有無やキャッシュヒットの有無、性能カウンタ値などを用いて消費エネルギーを算出するよう構成することが出来る。
【０１１０】
例えば、プロセッサの中には、キャッシュヒットの割合を測定するための性能カウンタを有するものが存在する。このような場合に、消費エネルギー推論部２５２は、性能カウンタの値を参考にしてロード・ストア命令の消費するエネルギーの推論値を変更することが考えられる。
【０１１１】
また、消費エネルギー推論部２５２は、電力制御プログラム２５１から電力統計情報を受け取らないように構成しても構わない。この場合には、消費エネルギー推論部２５２は、例えば、予め定められた値と、発行命令情報とに基づいて、消費エネルギーを算出することになる。
【０１１２】
また、消費電力履歴レジスタ２５３２に記憶されている積算消費エネルギー情報の値を外部から参照可能なよう構成しても構わない。このように構成することで、例えば、積算消費エネルギー情報の値から発熱量を推測し、推測した発熱量に基づいてマシン室の空調を調整することが可能となる。
【０１１３】
また、本実施形態においては、コンデンサの蓄積電荷が０になった場合に誤作動をするものとした。しかしながら、物理現象としては、回路に供給される電圧が１０％程度低下すると誤作動をする可能性があるものと考えられる。そのため、電力制限決定部２５３８は、エネルギー制限カウンタ２５３７のカウンタ値が１０％程度変化した段階で命令発行制限指示を出力するよう構成しても構わない。このように、電力制限決定部２５３８が命令発行制限指示を出力するタイミングは、エネルギー制限カウンタ２５３７のカウンタ値が負になった際や１０を下回った場合に限定されない。
【０１１４】
［第２の実施形態］
本発明の第２の実施形態について、図１２を参照して説明する。図１２は、電子回路６の構成の一例を示す概略ブロック図である。
【０１１５】
図１２を参照すると、電子回路６は、消費エネルギー推論部６１と、蓄積エネルギー量算出部６２と、を有している。
【０１１６】
消費エネルギー推論部６１は、発行した命令に基づいて当該命令に応じた演算処理を行う際に消費するエネルギーである消費エネルギーを算出する。つまり、消費エネルギー推論部６１は、電子回路６にて演算処理を行う際に、当該演算処理により消費されるエネルギーを算出する。そして、消費エネルギー推論部６１は、算出した消費エネルギーを蓄積エネルギー量算出部６２に送信する。
【０１１７】
蓄積エネルギー量算出部６２は、消費エネルギー推論部６１が算出した消費エネルギーと、回路に供給される供給エネルギーと、に基づいて、電子回路にて消費される電荷を蓄積する蓄電器に蓄積されているエネルギーの量である蓄積エネルギー量を算出する。つまり、蓄積エネルギー量算出部６２は、消費エネルギーと供給エネルギーとに基づいて、蓄電器に蓄積されている電子回路が利用可能な蓄積エネルギー量を算出する。
【０１１８】
このように、本実施形態における電子回路６は、消費エネルギー推論部６１と、蓄積エネルギー量算出部６２と、を有している。このような構成により、消費エネルギー推論部６１は、演算処理により消費されるエネルギーである消費エネルギーを算出することが出来る。また、蓄積エネルギー量算出部６２は、消費エネルギー推論部６１が算出した消費エネルギーと、供給エネルギーと、に基づいて、蓄積エネルギー量を算出することが出来る。その結果、電子回路６は、蓄電器に蓄積されている蓄積エネルギー量を考慮した上で電力消費を制御することが可能となる。これにより、電子回路６は、不必要な制御を行うことなく、的確に消費電力を制御することが可能となる。
【０１１９】
［第３の実施形態］
本発明の第３の実施形態について、図１３を参照して説明する。図１３は、マルチコアプロセッサ７の構成の一例を示す概略ブロック図である。
【０１２０】
図１３を参照すると、マルチコアプロセッサ７は、複数のプロセッサコア７１−１、７１−２、…７１−ｍ（以下、特に区別しない場合はプロセッサコア７１とする）を有している。
【０１２１】
プロセッサコア７１は、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出する。つまり、マルチコアプロセッサ７が有する複数のプロセッサコア７１のそれぞれが、自身が処理する命令の実行によって消費するエネルギーである消費エネルギーを算出するよう構成されている。
【０１２２】
このように、本実施形態におけるマルチコアプロセッサ７は、各プロセッサコア７１が、発行命令情報と、電力統計情報と、に基づいて、各々消費エネルギーを算出するように構成されている。このような構成により、各プロセッサコア７は、算出した消費エネルギーに基づいて、各自で新規の命令の発行の抑制などを行うことが出来るようになる。つまり、上記構成により、各プロセッサコア７は、各々が電力消費の上限を制御することが出来ることになる。その結果、より的確に電力消費を制御することが可能となる。
【０１２３】
また、各プロセッサコア７は、発行命令情報と電力統計情報とに基づいて消費エネルギーを算出するため、各部品に対する消費電力情報の収集網を設けることなく、消費エネルギーを算出することが出来ることになる。その結果、上記消費電力網を設ける際のコストを削減することが可能となる。
【０１２４】
また、上記マルチコアプロセッサ７は、各プロセッサコア７１に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、マルチコアプロセッサが有する複数のプロセッサコアのそれぞれに、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出させるためのプログラムである。
【０１２５】
また、上述したマルチコアプロセッサ７が作動することにより実行される情報処理方法は、複数のプロセッサコアを有するマルチコアプロセッサにおいて実行される情報処理方法であって、各プロセッサコアは、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出する、という方法である。
【０１２６】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記電マルチコアプロセッサ７と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１２７】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるマルチコアプロセッサなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１２８】
（付記１）
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、命令に応じた処理を実行する際の消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出するよう構成されている、
マルチコアプロセッサ。
【０１２９】
（付記２）
付記１に記載のマルチコアプロセッサにおいて、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示している、
マルチコアプロセッサ。
【０１３０】
（付記３）
付記２に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出するよう構成されている、
マルチコアプロセッサ。
【０１３１】
（付記４）
付記１乃至３の何れかに記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行うよう構成されている、
マルチコアプロセッサ。
【０１３２】
（付記５）
付記４に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身に供給される供給エネルギーから自身が算出した前記消費エネルギーを減算することで、命令を処理する際に消費可能な電荷を蓄積する蓄電器に蓄積されている蓄積エネルギー量を算出し、当該算出した蓄積エネルギー量に基づいて各々動的に新規の命令発行の制御を行うよう構成されている、
マルチコアプロセッサ。
【０１３３】
（付記６）
付記５に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記消費エネルギーに基づいて前記供給エネルギーを制御するよう構成されている、
マルチコアプロセッサ。
【０１３４】
（付記７）
付記６に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記消費エネルギーに基づいて算出される、プロセッサコアにて消費することが許容される許容電力量と、プロセッサコアごとに予め割り当てられている供給量である割当電力量と、のうち小さい値を持つ電力量が前記供給エネルギーとなるように制御する、
マルチコアプロセッサ。
【０１３５】
（付記８）
複数のプロセッサコアを有するマルチコアプロセッサにおいて実行される情報処理方法であって、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、を取得し、取得した前記発行命令情報と前記電力消費情報とに基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出する、
情報処理方法。
【０１３６】
（付記９）
付記８に記載の情報処理方法であって、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示しており、
前記各プロセッサコアは、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出する、
情報処理方法。
【０１３７】
（付記１０）
付記８又は９に記載の情報処理方法であって、
前記各プロセッサコアは、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行う、
情報処理方法。
【０１３８】
（付記１１）
マルチコアプロセッサが有する複数のプロセッサコアのそれぞれに、
自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出させるための、
プログラム。
【０１３９】
（付記１２）
付記１１に記載のプログラムであって、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示しており、
前記各プロセッサコアに、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出させる、
プログラム。
【０１４０】
（付記１３）
付記１１又は１２に記載のプログラムであって、
前記各プロセッサコアに、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行わせるための、
プログラム。
【０１４１】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１４２】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１４３】
１  マルチコアプロセッサ
２  プロセッサコア
２１  命令フェッチ・デコード部
２２  命令スケジューリング部
２３  命令実行部
２４  外部部品接続部
２５  命令発行制限部
２５１  電力制御プログラム
２５２  消費エネルギー推論部
２５３  命令発行レート決定部
２５３１  エネルギー積算カウンタ
２５３２  消費電力履歴レジスタ
２５３３  エネルギー積算時刻飽和カウンタ
２５３４  突入電流制限計算部
２５３５  最小値選択論理
２５３６  電力制限時刻飽和カウンタ
２５３７  エネルギー制限カウンタ
２５３８  電力制限決定部
３  共有キャッシュ
３１  外部メモリ
４  外部Ｉ／Ｏ接続部
４１  外部Ｉ／Ｏ
５  オンチップネットワーク
６  電子回路
６１  消費エネルギー推論部
６２  蓄積エネルギー量算出部
７  マルチコアプロセッサ
７１  プロセッサコア
【図１】
2016189111.tif 000003
【図２】
2016189111.tif 000004
【図３】
2016189111.tif 000005
【図４】
2016189111.tif 000006
【図５】
2016189111.tif 000007
【図６】
2016189111.tif 000008
【図７】
2016189111.tif 000009
【図８】
2016189111.tif 000010
【図９】
2016189111.tif 000011
【図１０】
2016189111.tif 000012
【図１１】
2016189111.tif 000013
【図１２】
2016189111.tif 000014
【図１３】
2016189111.tif 000015
【手続補正書】
【提出日】平成28年7月14日(2016.7.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、命令に応じた処理を実行する際の消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出するよう構成されており、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示している、
マルチコアプロセッサ。
【請求項２】
請求項１に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出するよう構成されている、
マルチコアプロセッサ。
【請求項３】
請求項１又は２の何れかに記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行うよう構成されている、
マルチコアプロセッサ。
【請求項４】
請求項３に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、自身に供給される供給エネルギーから自身が算出した前記消費エネルギーを減算することで、命令を処理する際に消費可能な電荷を蓄積する蓄電器に蓄積されている蓄積エネルギー量を算出し、当該算出した蓄積エネルギー量に基づいて各々新規の命令発行の制御を行うよう構成されている、
マルチコアプロセッサ。
【請求項５】
請求項４に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記消費エネルギーに基づいて前記供給エネルギーを制御するよう構成されている、
マルチコアプロセッサ。
【請求項６】
請求項５に記載のマルチコアプロセッサにおいて、
前記各プロセッサコアは、前記消費エネルギーに基づいて算出される、プロセッサコアにて消費することが許容される許容電力量と、プロセッサコアごとに予め割り当てられている供給量である割当電力量と、のうち小さい値を持つ電力量が前記供給エネルギーとなるように制御する
マルチコアプロセッサ。
【請求項７】
複数のプロセッサコアを有するマルチコアプロセッサにおいて実行される情報処理方法であって、
前記各プロセッサコアは、自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、を取得し、取得した前記発行命令情報と前記電力消費情報とに基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーをそれぞれ算出し、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示している
情報処理方法。
【請求項８】
請求項７に記載の情報処理方法であって、
前記各プロセッサコアは、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出する、
情報処理方法。
【請求項９】
請求項７又は８に記載の情報処理方法であって、
前記各プロセッサコアは、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行う、
情報処理方法。
【請求項１０】
マルチコアプロセッサが有する複数のプロセッサコアのそれぞれに、
自身が発行した命令を示す発行命令情報と、当該命令に応じた処理を実行する際に生じる消費電力の変化を示す電力消費情報と、に基づいて、自身が発行した命令を実行する際に消費するエネルギーである消費エネルギーを算出させ、
前記電力消費情報は、少なくとも、命令に応じた処理を実行する際のコア自身と、当該処理を実行する際に利用する共有部分と、の消費電力の変化を示している
プログラム。
【請求項１１】
請求項１０に記載のプログラムであって、
前記各プロセッサコアに、前記発行命令情報と、前記電力消費情報と、に基づいて、少なくとも、命令に応じた処理を実行する際に自己のコアが消費するエネルギーと、当該処理を実行する際に利用する共有部分が消費するエネルギーと、を含む前記消費エネルギーを算出させる、
プログラム。
【請求項１２】
請求項１０又は１１に記載のプログラムであって、
前記各プロセッサコアに、各自が算出した前記消費エネルギーに基づいて各々新規の命令発行の制御を行わせるための、
プログラム。