(57)【特許請求の範囲】
【請求項１】
複数のプロセッサに電力を供給する電源装置の出力を制御する方法であって、
前記電源装置の出力電流が所定値を越えたか否かを判断するステップと、
各プロセッサに流れる入力電流が含むパルス電流のピーク値を測定するステップと、
前記ピーク値に基づいて少なくとも１つのプロセッサを選択するステップと、
前記出力電流が前記所定値を越えている間に、前記選択したプロセッサにクロック周波数を低下させる制御信号を出力するステップと
を有する方法。
【請求項２】
前記ピーク値が、ベース電流に重畳された前記パルス電流だけのピーク値である請求項１に記載の方法。
【請求項３】
前記ピーク値が、前記入力電流の平均値とベース電流に重畳された前記パルス電流だけのピーク値の合計値である請求項１に記載の方法。
【請求項４】
前記パルス電流が前記プロセッサのクロック周波数が一時的に上昇するオーバークロック制御で発生し、前記パルス電流のパルス幅が１０ミリ秒以下である請求項２または請求項３に記載の方法。
【請求項５】
前記選択するステップが、前記複数のプロセッサのなかで前記ピーク値が所定値を超えたすべてのプロセッサを選択するステップを含む請求項１に記載の方法。
【請求項６】
前記選択するステップが、前記複数のプロセッサのなかで前記ピーク値が大きい方から順番に所定個数のプロセッサを選択するステップを有する請求項１に記載の方法。
【請求項７】
前記選択するステップが、前記入力電流の平均値の大きさに応じてベース電流に重畳されたパルス電流だけのピーク値または前記入力電流の平均値と前記パルス電流だけのピーク値の合計値のいずれかを選択するステップを有する請求項１に記載の方法。
【請求項８】
前記制御信号を出力している時間が所定値を越えたときに当該プロセッサに対する前記制御信号を停止するステップを含む請求項１に記載の方法。
【請求項９】
複数のプロセッサに電力を供給する電源装置の出力を制御する方法であって、
前記電源装置の出力電流が所定値を越えたか否かを判断するステップと、
各プロセッサに流れる入力電流が含むピーク値を測定するステップと、
前記出力電流が前記所定値を越えている間に、前記複数のプロセッサのなかで前記ピーク値が最大の入力電流が流れている第１のプロセッサにクロック周波数を低下させる制御信号を出力するステップと、
前記制御信号を出力したあとで前記出力電流が前記所定値を越えている間に、前記複数のプロセッサのなかで前記ピーク値が最大の入力電流が流れている第２のプロセッサに制御信号を出力するステップと
を有する方法。
【請求項１０】
複数のプロセッサに電力を供給する電源装置の出力を制御する方法であって、
前記電源装置の出力電流と参照信号を比較するステップと、
各プロセッサに流れる入力電流が含むパルス電流のピーク値を測定するステップと、
前記ピーク値に基づいて少なくとも１つのプロセッサを選択するステップと、
前記出力電流が前記参照信号より大きいときに前記選択したプロセッサにクロック周波数を低下させる制御信号を出力するステップと、
前記出力電流が前記参照信号より小さいときに前記制御信号を停止するステップと
を有する方法。
【請求項１１】
前記参照信号が一定値信号で、前記比較するステップが前記出力電流と前記参照信号を一定の時間間隔で比較する請求項１０に記載の方法。
【請求項１２】
前記参照信号が一定周期の三角波信号である請求項１０に記載の方法。
【請求項１３】
前記プロセッサを選択するステップが、前記ピーク値が所定の閾値を超えた複数のプロセッサを選択する請求項１０に記載の方法。
【請求項１４】
前記プロセッサを選択するステップが、前記ピーク値の大きい順に選択した複数のプロセッサを選択する請求項１０に記載の方法。
【請求項１５】
前記プロセッサを選択するステップが、前記ピーク値が最大のプロセッサを選択する請求項１０に記載の方法。
【請求項１６】
複数のプロセッサに電力を供給する電源装置を含む電源システムであって、
前記電源装置の出力電流と参照信号を比較して第１の制御信号を出力するクロック制御判定部と、
各プロセッサに流れる入力電流が含むパルス電流のピーク値を検出して出力するピーク検出部と、
前記ピーク値に基づいて少なくとも１つのプロセッサを選択し、選択した前記プロセッサに対応する第２の制御信号を出力する制御対象選択部と、
前記第１の制御信号と前記第２の制御信号を受け取ったときに前記選択したプロセッサにクロック周波数を低下させる第３の制御信号を出力する制御信号出力部と
を有する電源システム。
【請求項１７】
前記クロック制御判定部は、一定値の参照信号と前記出力電流を所定の時間間隔で比較して前記出力電流が大きいときだけ前記第１の制御信号を出力する請求項１６に記載の電源システム。
【請求項１８】
前記クロック制御判定部は、三角波の参照信号と前記出力電流を比較して前記出力電流が大きいときだけ前記第１の制御信号を出力する請求項１６に記載の電源システム。
【請求項１９】
前記制御対象選択部は、前記ピーク値が所定の閾値を超えた複数のプロセッサを選択する請求項１６に記載の電源システム。
【請求項２０】
前記制御対象選択部は、前記ピーク値が最大のプロセッサを選択する請求項１６に記載の電源システム。
【請求項２１】
前記制御信号出力部は、前記第１の制御信号または前記第２の制御信号のいずれかが停止したときに前記第３の制御信号を停止する請求項１６に記載の電源システム。
【請求項２２】
前記制御信号出力部は、前記第３の制御信号を一定の時間経過後に停止する請求項１６に記載の電源システム。
【請求項２３】
前記ピーク検出部は、ベース電流に重畳されたパルス電流だけのピーク値を出力する請求項１６に記載の電源システム。
【請求項２４】
請求項１６から請求項２３のいずれかに記載の電源システムを搭載する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のプロセッサに電力を供給する電源装置がシャットダウンしないようにするために各プロセッサをクロック制御する技術に関し、さらに詳細にはパフォーマンスの低下を抑制しながら各プロセッサをクロック制御する技術に関する。
【背景技術】
【０００２】
サーバのような情報処理装置には複数の中央演算処理装置（ＣＰＵ）を搭載したマルチＣＰＵまたは単一のパッケージに複数のＣＰＵコアを実装したマルチコアＣＰＵが搭載されており、これらはさまざまなアルゴリズムでタスクを分担しながら動作している。本明細書ではマルチコアＣＰＵにマルチＣＰＵも含めて説明する。したがって、ＣＰＵコアといった場合は、マルチＣＰＵを構成する独立したＣＰＵも含むものとする。マルチコアＣＰＵに対する一般的な電源供給方式では、単一の電源装置（ＰＳＵ：power supply unit）から分岐した複数のＤＣ／ＤＣコンバータが、それぞれ対応するＣＰＵコアに電力を供給する。
【０００３】
特許文献１は、マルチプロセッサシステムにおいて、負荷が少ないＣＰＵのクロックを下げて動作状態に応じた省電力制御を行う発明を開示する。特許文献２は、電力システムから電力の供給を受けるマルチコア・プロセッサの消費電力が閾値を超えたときに、選択したコアのクロックを停止させ、電力システムの出力電圧を指定された値に近づける制御をする発明を開示する。特許文献３は、消費電力が閾値を超えた場合にＣＰＵのクロック周波数を下げるスロットル制御を行う技術を開示する。特許文献４は、消費電力が所定値を越えたときにＣＰＵのクロック・レートを低下させて電源の小型化を図る技術を開示する。特許文献５は、パフォーマンスの低下を抑制しながらプロセッサのクロック周波数を制御する発明を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−６６８１号公報
【特許文献２】特表２０１０−５１５９８４号公報
【特許文献３】特開２００７−７２９６２号公報
【特許文献４】特開平１０−２６８９８６号公報
【特許文献５】特開２０１３−１８２５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マルチコアＣＰＵに電源を供給するＰＳＵには、過負荷保護のための保護装置を設けている。保護装置は、ＰＳＵの出力電流が定格電流より所定値だけ所定時間越えたときにＰＳＵをシャットダウンさせる。ＰＳＵの定格電力は一般的に、すべてのＣＰＵコアが最大消費電力で動作すると想定したときの合計最大消費電力よりも小さくなっている。そして、合計した消費電力がＰＳＵの定格電力を越える場合には、すべてのＣＰＵコアのクロック周波数または特許文献２に示すように選択したＣＰＵコアのクロック周波数を下げて消費電力を抑制している。
【０００６】
ある種のマルチコアＣＰＵには、特定のインストラクションを処理するために負荷が多くなったときに一時的に定格のクロック周波数よりも高いクロック周波数で動作するオーバークロックという制御技術が組み込まれている。インテル（登録商標）社が提供するマルチコアＣＰＵでは、ターボ・ブーストという技術でオーバークロックを実現している。オーバークロックを実行している各ＣＰＵコアの電流には、周波数が上昇したときに図９に示すように不規則な周期でベース電流Ｉｂに重畳された最大１０ｍｓ程度のパルス幅の電流を観測することができる。
【０００７】
このようなベース電流Ｉｂに重畳されている部分の電流を以後パルス電流Ｉｐｋという。パルス電流Ｉｐｋのピーク値は、ＣＰＵコアの定格電流よりも大きい場合がある。各ＣＰＵコアにパルス電流Ｉｐｋが重畳された入力電流が流れると、ＰＳＵの出力電流の平均値は定格電流より小さくても大きなパルス電流Ｉｐｋが流れて保護装置が動作する可能性がある。
【０００８】
これまでのＰＳＵの保護の一例においては、ＰＳＵの出力電流が定格電流を５００μｓ以上越えたときにすべてのＣＰＵコアを対象にしてクロック制御をしている。しかしＰＳＵの保護の観点からは、出力電流が定格電流を短時間だけ越えたときにすべてのＣＰＵコアをクロック制御する必要はない。また、一時的に定格電流を越えたときには、保護装置を動作させないために必要な最低限の範囲でクロック制御することがパフォーマンス低下の抑制の上では望ましい。
【０００９】
そこで本発明の目的は、複数のプロセッサに電力を供給する電源装置がシャットダウンしないように出力を制御する方法を提供することにある。さらに本発明の目的は、複数のプロセッサに電力を供給する電源装置のシャットダウンを防止すると同時に、プロセッサのパフォーマンスの過剰低下を抑制しながら出力を制御する方法を提供することにある。さらに本発明の目的は、オーバークロック動作をするプロセッサに電力を供給する電源装置がシャットダウンしないように出力を制御する方法を提供することにある。さらに本発明の目的は、そのような方法を実現する電源システムおよび情報処理装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、複数のプロセッサに電力を供給する電源装置の出力電力を制御する方法を提供する。プロセッサの意味には、マルチコア・プロセッサを構成するコア・プロセッサを含む。各プロセッサに流れる入力電流のピーク値が重なると、電源装置にもピーク値が発生して保護装置が動作しシャットダウンする可能性が高まる。本発明は、入力電流のピーク値に着目してクロック制御するプロセッサを選択し、パフォーマンスの低下を抑制しながら電源装置のシャットダウンを防止する。
【００１１】
本発明の第１の態様では電源装置の出力電流が所定値を越えたか否かを判断する。さらに、各プロセッサに流れる入力電流のピーク値を測定する。さらに各ピーク値に基づいて少なくとも１つのプロセッサを選択する。さらに、出力電流が所定値を越えている間に、選択した１つまたは複数のプロセッサにクロック周波数を低下させる制御信号を出力する。
【００１２】
上記構成により、クロック制御の対象をプロセッサの入力電流のピーク値で評価して、当該プロセッサだけをクロック制御することができるため、複数のプロセッサ全体のパフォーマンスの低下を抑制しながら電源装置のシャットダウンを防止することができる。入力電流のピーク値は、ベース電流に重畳されたパルス電流だけのピーク値とすることができる。この場合、平均値が小さくてピーク値が大きい電流を消費しているプロセッサを選択することができるため、パフォーマンスの低下を抑制しながら出力電流のピーク値の低減に有効なプロセッサをクロック制御することができる。
【００１３】
入力電流のピーク値は、入力電流の平均値とベース電流に重畳されたパルス電流だけのピーク値の合計値とすることができる。この場合は、出力電流のピーク値の最も大きい原因になっているプロセッサを選択することができるため、電源装置のシャットダウンを確実に防止することができる。クロック制御の対象を選択するためのピーク値は、入力電流の平均値の大きさに応じて、ベース電流に重畳されたパルス電流だけのピーク値または入力電流の平均値とパルス電流だけのピーク値の合計値のいずれかを選択することができる。
【００１４】
パルス電流のパルス幅は１０ミリ秒以下とすることができる。本発明は、プロセッサが一時的に定格クロック周波数より高いオーバークロックで動作するときに発生するパルス電流に対して特に有効である。クロック制御の対象は、複数のプロセッサのなかでピーク値が所定値を超えたすべてのプロセッサとしてもよい。さらにクロック制御の対象は、複数のプロセッサのなかでピーク値が大きい方から順番に選択した所定個数のプロセッサとしてもよい。電源装置の出力電流のピーク値は、各プロセッサに流れる入力電流のピーク値が発生するタイミングが変化したり、いずれかのプロセッサのピーク値が小さくなったりすると小さくなるので、制御信号を出力している時間が所定値を越えたときに、出力電流の大きさにかかわらず一旦当該プロセッサに対する前制御信号を停止してパフォーマンスを回復させることができる。
【００１５】
本発明の第２の態様では、電源装置の出力電流のピーク値が所定値を越えたか否かを判断する。さらに、各プロセッサに流れる入力電流が含むピーク値を測定する。さらに、出力電流のピーク値が所定値を越えている間に、複数のプロセッサのなかでピーク値が最大の入力電流が流れている第１のプロセッサにクロック周波数を低下させる制御信号を出力する。さらに制御信号を出力したあとで出力電流のピーク値が所定値を越えている間に、残りの複数のプロセッサのなかでピーク値が最大の入力電流が流れている第２のプロセッサに制御信号を出力する。この構成によれば、ピーク値の大きなプロセッサから順番に効果を確認しながらクロック制御をすることができるため、パフォーマンスの低下を抑制しながら、シャットダウンを防止することができる。
【００１６】
本発明の第３の態様では、電源装置の出力電流と参照信号を比較する。さらに各プロセッサに流れる入力電流が含むピーク値を測定する。さらに複数のプロセッサのなかからピーク値の大きさに基づいて少なくとも１つのプロセッサを選択する。さらに、出力電流が参照信号より大きいときに、選択したプロセッサにクロック周波数を低下させる制御信号を出力する。さらに、出力電流が参照信号より小さいときに前記制御信号を停止する。
【００１７】
この構成によれば、参照信号と出力電流の比較に基づいて、クロック制御の実行と停止のタイミングを制御することができる。参照信号が一定値信号のときに、出力電流と参照信号を一定の時間間隔で比較することができる。参照信号は一定周期の三角波信号とすることができる。三角波信号を利用すれば、一定値信号より一層パフォーマンスの低下を抑制することができる。クロック制御の対象は、ピーク値が所定の閾値を超えたプロセッサとすることができる。クロック制御の対象はまた、ピーク値の大きい順に選択した複数のプロセッサとすることができる。
【発明の効果】
【００１８】
本発明により、複数のプロセッサに電力を供給する電源装置がシャットダウンしないように出力を制御する方法を提供することができた。さらに本発明により、複数のプロセッサに電力を供給する電源装置のシャットダウンを防止すると同時に、プロセッサのパフォーマンスの過剰低下を抑制しながら出力を制御する方法を提供することができた。さらに本発明により、オーバークロック動作をするプロセッサに電力を供給する電源装置がシャットダウンしないように出力を制御する方法を提供することができた。さらに本発明により、そのような方法を実現する電源システムおよび情報処理装置を提供することができた。
【図面の簡単な説明】
【００１９】
【図１】サーバに搭載する電源システム１０の一例を説明するための機能ブロック図である。
【図２】ＣＰＵコア＃１の入力電流ＩｘおよびＰＳＵ１１の出力電流Ｉｙの波形を説明する図である。
【図３】ピーク検出部５３ａの構成を説明するための機能ブロック図である。
【図４】制御部１２０の構成を説明するための機能ブロック図である。
【図５】制御信号（PROCHOT#）を出力する第１の制御方法を説明するための図である。
【図６】第１の制御方法の動作手順を説明するためのフローチャートである。
【図７】制御信号（PROCHOT#）を出力する第２の制御方法を説明するための図である。
【図８】第２の制御方法の動作手順を説明するためのフローチャートである。
【図９】オーバークロックを実行しているＣＰＵコアに流れる電流の波形を説明するための図である。
【発明を実施するための形態】
【００２０】
図１は、サーバに搭載する電源システム１０の一例を説明するための機能ブロック図である。電源システム１０は、サーバ以外の情報処理装置に搭載することもできる。ＰＳＵ１１は、商用電源を所定の直流電圧に変換するスイッチング・レギュレータで構成している。センス抵抗５１は両端がＢＭＵ（Baseboard Management Controller）１００のクロック制御部１１０に接続されており、ＰＳＵ１１に流れる出力電流Ｉｙを電圧信号として出力する。ＰＳＵ１１は、過負荷保護をするための保護装置を備えている。保護装置はＰＳＵ１１の出力電流Ｉｙが動作電流Ｉｈを連続して所定時間以上越えるとＰＳＵ１１をシャットダウンさせる。
【００２１】
ＰＳＵ１１には、代表的にそれぞれ電圧調整器（ＶＲ：Voltage Regulator）５５ａ〜５５ｄを経由してマルチコアＣＰＵ５７が負荷として接続されている。マルチコアＣＰＵ５７は一例として４個のＣＰＵコア＃１〜＃４を含むが本発明の適用においてＣＰＵコアの数には制限がない。ＰＳＵ１１には、さらにマルチコアＣＰＵ以外のプロセッサまたはプロセッサ以外の負荷が接続されていてもよい。本実施の形態では、各ＣＰＵコア＃１〜＃４の定格電流は等しいものとして説明するが定格電流が異なっていてもよい。
【００２２】
ＶＲ５５ａ〜５５ｄは、ＰＳＵ１１の出力電圧を安定した直流電圧に変換してＣＰＵコア＃１〜＃４に電力を供給する。マルチコアＣＰＵ５７は、一例としてインテル（登録商標）社のXeon（登録商標） Processorとすることができる。各ＣＰＵコア＃１〜＃４の外部端子に対して制御信号（PROCHOT#）をアサートすると、各ＣＰＵコアは相互に独立してクロック周波数を低下させたり動作電圧を低下させたりして消費電力を低減する。このようにしてＣＰＵコアの外部端子を使って消費電力を低下させることをクロック制御という。
【００２３】
なお、本発明は制御信号（PROCHOT#）以外の信号を外部端子から送ってクロック制御できるタイプのマルチコアＣＰＵに適用することができる。本発明の好適な適用例においてマルチコアＣＰＵ５７は、ターボ・ブーストのようなオーバークロックによる動作をサポートするが、本発明の適用が可能なプロセッサは負荷に応じて自動的にクロック周波数を変更するタイプであればターボ・ブーストをサポートしていなくてもよい。各ＣＰＵコア＃１〜＃４には、入力電流Ｉｘが流れる。
【００２４】
図２は、ＶＲ５５ａ〜５５ｄを代表して、ＣＰＵコア＃１のＶＲ５５ａに流れる入力電流Ｉｘの波形およびＰＳＵ１１の出力電流Ｉｙの波形を説明するための図である。入力電流Ｉｘは、ベース電流にパルス電流Ｉｐｋが重畳された脈動電流である。本発明を限定するものではないが、本実施の形態ではパルス幅Ｗｐが１０ｍｓ以下のパルス電流Ｉｐｋを例示して説明する。パルス幅Ｗｐは、以下に説明するピーク値Ｉｐ１の５０％の位置で特定することができる。
【００２５】
脈動電流の大きさは、ある時間における入力電流Ｉｘの平均値Ｉａｖと脈動電流のピーク値Ｉｐ２で特定することができる。本実施の形態では、脈動電流のピーク値Ｉｐ２と平均値Ｉａｖとの差に相当するピーク値Ｉｐ１をパルス電流のピーク値Ｉｐ１といいピーク値Ｉｐ１を形成する波形部分（平均値Ｉａｖを越える部分）をパルス電流Ｉｐｋということにする。ＣＰＵコアの負荷に応じたタイミングで変化するパルス電流Ｉｐｋが流れる脈動電流は、平均値Ｉａｖ、ピーク値Ｉｐ１、Ｉｐ２が評価する時間ごとに異なる値になる。他のＣＰＵコア５７ｂ〜５７ｄにも同様のパルス電流Ｉｐｋを含む脈動電流が流れる。
【００２６】
また、ＰＳＵ１１の出力電流Ｉｙは各ＣＰＵコア＃１〜＃４の各ＶＲ５５ａ〜５５ｄに流れる入力電流Ｉｘが合成された脈動電流となり、入力電流Ｉｘと同様にピーク値Ｉｐ１、Ｉｐ２、平均値Ｉａｖを特定することができる。ピーク検出部５３ａ〜５３ｄは、各ＶＲ５５ａ〜５５ｄに流れる入力電流Ｉｘのピーク値Ｉｐ１、Ｉｐ２を検出する。ピーク検出部５３ａ〜５３ｄは、対応するＶＲ５５ａ〜５５ｄに組み込むこともできる。図３は、ピーク検出部５３ａの構成を説明するための機能ブロック図である。他のピーク検出部５３ｂ〜５３ｄも同様の構成にすることができる。
【００２７】
ピーク検出部５３ａはハードウェアで構成されており、平均値計算部１５１ａ、ハイパス・フィルター１５１ｂ、ピーク値計算部１５１ｃ、１５１ｄ、および出力部１５１ｅを含んでいる。平均値計算部１５１ａは、各ＣＰＵコアに流れる入力電流Ｉｘの平均値Ｉａｖを計算する。ハイパス・フィルター１５１ｂは、一例においてカットオフ周波数が１００ＫＨｚ（周期１０μｓ）で、入力電流Ｉｘが含む１００ＫＨｚ以上の周波数の電流だけを通過させる。
【００２８】
ピーク値計算部１５１ｃは、微分回路および積分回路などを含んでおり、ハイパス・フィルター１５１ｂを通過した入力電流Ｉｘからパルス電流のピーク値Ｉｐ１を計算する。ピーク値計算部１５１ｄは、平均値Ｉａｖとパルス電流Ｉｐｋのピーク値Ｉｐ１を合計して脈動電流のピーク値Ｉｐ２を計算する。出力部１５１ｅは、設定によりパルス電流のピーク値Ｉｐ１および脈動電流のピーク値Ｉｐ２またはいずれか一方を出力する。
【００２９】
図１に戻って、ＢＭＣ１００は、プロセッサ、ＲＡＭ、ファームウェアＲＯＭおよびハードウェア・ロジック回路などを含むマイクロ・コンピュータで、ＰＳＵ１１に流れる出力電流Ｉｙとピーク検出部５３ａ〜５３ｄが検出した各ピーク値Ｉｐ１、Ｉｐ２に基づいて、選択したＣＰＵコアをクロック制御する。参照信号設定部１１１は、一定値または一定周期の三角波の参照信号Ｉｒｅｆを出力電流Ｉｙに対応する電圧信号としてクロック制御判定部１１０に送る。
【００３０】
クロック制御判定部１１０は、コンパレータを含んでおいる。コンパレータは、参照信号設定部１１１が設定する参照信号Ｉｒｅｆと出力電流Ｉｙを比較して出力電流Ｉｙが参照信号Ｉｒｅｆを超えたときに、要求信号（PROCHOT_REQ#）を制御部１２０に出力する。後に説明する制御方法の一例において、クロック制御判定部１１０は、参照信号Ｉｒｅｆと出力電流Ｉｙを比較するためのタイミングを得るために一例において１００μｓの周期のサンプリング・クロックを生成することができる。
【００３１】
制御部１２０は、図４に示すように制御対象選択部１１３および制御信号出力部１１５を含んでいる。制御部１２０は、ＢＭＣ１００のファームウェアを実行するプロセッサおよびＲＡＭなどの協働による機能として実現することができる。また他の例においては、制御部１２０は、ＢＭＣ１００またはＢＭＣ１００から独立したハードウェア・ロジック回路だけで実現することもできる。
【００３２】
制御対象選択部１１３は、ピーク検出部５３ａ〜５３ｄから、パルス電流のピーク値Ｉｐ１または脈動電流のピーク値Ｉｐ２を受け取って、後に説明するアルゴリズムでクロック制御の対象とするＣＰＵコアを選択する。制御対象選択部１１３は、制御信号出力部１１５に選択したＣＰＵコアに対応する選択信号（SEL）を出力する。なお、本発明は制御対象選択部１１３がピーク値Ｉｐ１およびピーク値Ｉｐ２のいずれに基づいてもクロック制御の対象とするＣＰＵコアを選択できるため、以後、両者を区別する必要がない限りピーク値Ｉｐ１およびピーク値Ｉｐ２を総称してピーク値Ｉｐということにする。
【００３３】
制御対象選択部１１３はピーク値Ｉｐに基づいて同時に１つまたは複数のＣＰＵコアをクロック制御の対象に選択して対応する選択信号（SEL）を出力する。制御対象選択部１１３は、ピーク値が所定の閾値を超えた複数のＣＰＵコア、ピーク値が最大のＣＰＵコア、ピーク値が大きい方から所定個数のＣＰＵコアをクロック制御の対象に選択することができる。制御対象選択部１１３は、ピーク値Ｉｐの大きさの順位が変化するたびに、選択したＣＰＵコアに対応する選択信号（SEL）を出力することができる。制御信号出力部１１５は、サンプリング・クロックのタイミングで、要求信号（PROCHOT_REQ#）と選択信号（SEL）に基づいて、クロック制御条件の成立を判断する。サンプリング・クロックの周期は一例において１００μｓとすることができる。
【００３４】
制御対象選択部１１３が閾値とピーク値を比較してクロック制御の対象を選択する場合はいずれの選択信号（SEL）も出力しない場合がある。このとき制御信号出力部１１５は要求信号（PROCHOT_REQ#）といずれかの選択信号（SEL）を同時に受け取ったときに、クロック制御条件が成立したと判断する。制御信号出力部１１５は、クロック制御条件が成立したときに、選択信号（SEL）で指定されたＣＰＵコアに制御信号（PROCHOT#）を出力する。
【００３５】
制御信号出力部１１５は、一旦出力した制御信号（PROCHOT#）を一例として１０ｍｓといった一定のホールド時間後に停止して、クロック制御を解除することができる。他の例において制御信号出力部１１５は、要求信号（PROCHOT_REQ#）のアサート、ネゲートのタイミングで制御信号（PROCHOT#）を出力したり停止したりすることができる。制御信号出力部１１５は、クロック制御を解除したあとに引き続いてクロック制御条件が成立したと判断すれば制御信号（PROCHOT#）を出力する。
【００３６】
［第１の制御方法］
つぎに電源システム１０の動作を説明する。図５は、一定値の参照信号Ｉｒｅｆを利用して制御信号（PROCHOT#）を出力するようにした第１の制御方法を説明するための図である。図６は第１の制御方法の動作手順を説明するためのフローチャートである。ブロック３０１で参照信号設定部１１１は、ＰＳＵ１１の定格電流Ｉａに相当する一定値Ｉｔｈ１の参照信号Ｉｒｅｆを出力している。ＰＳＵの種類によっては一定値Ｉｔｈ１が、定格電流Ｉａより大きな値の場合もあるが、そのようなＰＳＵに対しても本発明は適用できる。
【００３７】
保護装置の動作電流Ｉｈは、一例として定格電流Ｉａの１３０％に設定している。保護装置は、出力電流Ｉｙが動作電流Ｉｈを一例として５ｍｓ越えるとＰＳＵ１１をシャットダウンさせる。動作電流Ｉｈは、主としてＰＳＵ１１の熱的な容量で定まる。従来の制御方法では出力電流Ｉｙが定格電流Ｉａを所定の時間だけ超えると、すべてのＣＰＵコア＃１〜＃４に制御信号（PROCHOT#）を出力してクロック制御しているため、パフォーマンスが必要以上に低下していた。あるいは、クロック制御の実行を回避するためにはマルチコアＣＰＵ５７の定格容量に対して過剰な定格容量のＰＳＵを採用する必要があった。
【００３８】
ブロック３０３でクロック制御判定部１１０は、出力電流Ｉｙと参照信号Ｉｒｅｆを比較している。制御対象選択部１１３は連続的にピーク検出部５３ａ〜５３ｄからピーク値Ｉｐを受け取って、各ピーク値の大きさの相互関係を比較する。あるいは制御対象選択部１１３は、各ピーク値Ｉｐと閾値Ｉｔｈ２と比較する。ブロック３０５で制御対象選択部１１３は、一例としてピーク値が最大のＣＰＵコアをクロック制御の対象に選択して、対応する選択信号（SEL）を出力する。ブロック３０７でクロック制御判定部１１０は、出力電流Ｉｙが参照信号Ｉｒｅｆより大きいと判断したときにブロック３０９で要求信号（PROCHOT_REQ#）をアサートする。図５にはクロック制御判定部１１０が時刻ｔ１１で要求信号（PROCHOT_REQ#）をアサートした様子を示している。
【００３９】
制御信号出力部１１５は、図５に示すサンプリング・クロックのタイミングで要求信号（PROCHOT_REQ#）からクロック制御条件の成立を判断する。サンプリング・クロックの周波数は一例において１０ＫＨｚ（周期１００μｓ）とすることができる。制御信号出力部１１５は、時刻ｔ１１以前では、要求信号（PROCHOT_REQ#）がネゲートされているためクロック制御条件が成立しないと判断して制御信号（PROCHOT#）を出力しない。時刻ｔ１１以降に最初に到来する時刻ｔ１においてはクロック制御条件が成立している。
【００４０】
このときＣＰＵコア＃１の最もピーク値Ｉｐが大きくなっているため、制御対象選択部１１３はブロック３０５でＣＰＵコア＃１に対応する制御信号（SEL1）を出力している。ブロック３１１で制御信号出力部１１５は、制御信号（SEL1）に対応するＣＰＵコア＃１に制御信号（PROCHOT#１）を出力する。その結果、クロック制御されたＣＰＵコア＃１の入力電流ＩｘとＰＳＵ１１の出力電流Ｉｙが低下する。制御信号出力部１１５は、各制御信号（PROCHOT#）に対して、一例として１０ｍｓといった一定のホールド時間を設定する。
【００４１】
ブロック３１３でクロック制御判定部１１０は、時刻ｔ２以降において、要求信号（PROCHOT_REQ#）のアサートにより出力電流Ｉｙが依然として参照信号Ｉｒｅｆより大きいと判断したときはブロック３１１に戻る。制御対象選択部１１３は、サンプリング・クロックの時刻ｔ２の立ち上がりエッジのタイミングでピーク値Ｉｐが最も大きいＣＰＵコアを特定して選択信号（SEL）を出力する。図５の例では、ＣＰＵコア＃３のピーク値Ｉｐが最も大きいため、ブロック３１１で制御信号出力部１１５は制御信号（SEL3）に対応するＣＰＵコア＃３に制御信号（PROCHOT#3）を出力する。その結果、ＣＰＵコア＃３がクロック制御されて出力電流Ｉｙがさらに低下する。このとき、制御信号（PROCHOT#１）のホールド時間は経過していないため、ＣＰＵコア＃１のクロック制御は継続している。
【００４２】
同様にして制御信号出力部１１５は時刻ｔ３でＣＰＵコア＃２に制御信号（PROCHOT#2）を出力する。時刻ｔ１３では、ブロック３１３で出力電流Ｉｙが参照電流Ｉｒｅｆより低下するため、クロック制御判定部１１０はブロック３１５で要求信号（PROCHOT_REQ#）をネゲートする。その結果、クロック制御条件は解除される。ブロック３１７で要求信号（PROCHOT_REQ#）がネゲートされたことを認識した制御信号出力部１１５は、すでに制御信号（PROCHOT#）を出力したＣＰＵコア＃１、＃２、＃３のホールド時間を監視して、ブロック３１９でホールド時間が経過したＣＰＵコアに対する制御信号（PROCHOT#）を停止する。
【００４３】
ホールド時間は、ＣＰＵコアの入力電流Ｉｘに想定したパルス電流Ｉｐｋのパルス幅Ｗｐにほぼ近い値にしているため、ホールド時間が経過したＣＰＵコアのクロック制御を解除しても、出力電流Ｉｙを増加させない可能性が高い。その結果、ホールド時間が経過したＣＰＵコアはクロック周波数が定格値に復帰する。クロック制御を解除したことにより出力電流Ｉｙが上昇する場合は、ブロック３０３以降の手順で処理する。
【００４４】
これまでブロック３０５で制御対象選択部１１３が、ブロック３１３の条件（Ｉｙ＜Ｉｒｅｆ）が成立するまでサンプリング・クロックのタイミングでピーク値Ｉｐが最大のＣＰＵコアに対してクロック制御をする例を説明したが、ＣＰＵコアの数が多い場合は、ピーク値の大きい順に選択した２個〜３個の複数のＣＰＵコアを一度にクロック制御の対象に選択して選択信号（SEL）を出力してもよい。また、ピーク値Ｉｐに所定の閾値Ｉｔｈ２を設定し、要求信号（PROCHOT_REQ#）がアサートされているときにサンプリング・クロックのタイミングで閾値Ｉｔｈ２を越えたすべてのＣＰＵコアに対して制御信号（PROCHOT#）を出力するようにしてもよい。
【００４５】
この場合は、制御信号出力部１１５が要求信号（PROCHOT_REQ#）と選択信号（SEL）を同時に受け取ったときにクロック制御条件が成立する。たとえば、時刻ｔ１では、ＣＰＵコア＃１、＃２が閾値Ｉｔｈ２を越えているので、制御信号出力部１１５は、制御信号（PROCHOT#1、#2）を出力する。もし時刻ｔ２でＣＰＵコア＃３だけが閾値Ｉｔｈ２を越えていれば、さらに制御信号（PROCHOT#3）を出力する。もし時刻ｔ３で、ＣＰＵコア＃３、＃４のいずれも閾値Ｉｔｈ２より小さい場合は、その時点では追加的なクロック制御をしない。
【００４６】
制御対象選択部１１３は、クロック制御の対象とするＣＰＵコアを選択するためのピーク値Ｉｐとして、パルス電流のピーク値Ｉｐ１と脈動電流のピーク値Ｉｐ２のいずれも採用することができる。制御対象選択部１１３がパルス電流のピーク値Ｉｐ１に基づいてクロック制御の対象となるＣＰＵコアを選択すれば、ピーク値Ｉｐ１が大きくて平均値Ｉａｖが小さいパルス電流Ｉｐｋが流れているＣＰＵコアを選択することができる。この場合、平均電流Ｉａｖが小さいＣＰＵコアは処理量が少ないため、マルチコアＣＰＵ５７の全体のパフォーマンスの低下を防ぎながら、ＰＳＵ１１のシャットダウンを防ぐことができる。
【００４７】
また、制御対象選択部１１３が脈動電流のピーク値Ｉｐ２基づいてクロック制御の対象となるＣＰＵコアを選択すれば、ＰＳＵ１１の出力電流Ｉｙのピーク値Ｉｐを低減するうえで最も効果の高いＣＰＵコアを選択することになる。この場合、選択するＣＰＵコアの処理量が多い場合があるが、出力電流Ｉｙのピーク値を最も効果的に低減できるＣＰＵコアを選択するため、より確実にＰＳＵ１１のシャットダウンを防ぐことができる。
【００４８】
制御対象選択部１１３は、出力電流Ｉｙの平均値Ｉａｖの大きさに応じて、クロック制御の対象の選択に利用するピーク値Ｉｐ１、Ｉｐ２を選択してもよい。たとえば、出力電流Ｉｙの平均値Ｉａｖが、閾値Ｉｔｈ１に近づいてきたときは、急激に大きなパルス電流が重畳されると保護装置が動作する可能性が高くなるのでピーク値Ｉｐ２を利用して、シャットダウンを防ぐために最も効果的なＣＰＵコアに対してクロック制御をすることができる。これに対して出力電流Ｉｙの平均値Ｉａｖが、閾値値Ｉｔｈ１より十分に小さいときはシャットダウンの可能性が低いためパフォーマンスの低下の抑制を優先してピーク値Ｉｐ１を採用してクロック制御をすることができる。
【００４９】
ブロック３１１で制御信号（PROCHOT#）を１０ｍｓホールドする例を説明したが、制御信号（PROCHOT#）をホールドしないで、サンプリング・クロックのタイミングで要求信号（PROCHOT_REQ#）の状態に基づいて、制御信号（PROCHOT#）を出力および停止することができる。一例としてクロック制御判定部１１０は、１００μｓのサンプリング・クロックのタイミングで、参照信号Ｉｒｅｆと出力電流Ｉｙを比較し、出力電流Ｉｙが大きい期間だけ要求信号（PROCHOT_REQ#）をアサートする。
【００５０】
制御信号出力部１１５は、要求信号（PROCHOT_REQ#）がアサートされたときは、制御対象選択部１１３から受け取った選択信号（SEL）に対応するＣＰＵコアに制御信号（PROCHOT#）を出力し、要求信号（PROCHOT_REQ#）がネゲートされたときは制御信号（PROCHOT#）を停止する。参照信号Ｉｒｅｆと出力電流Ｉｙの比較は、制御信号出力部１１５がサンプリング・クロックのタイミングで行ってもよい。
【００５１】
このとき制御対象選択部１１３は、ピーク値Ｉｐが所定の閾値Ｉｔｈ２を越えたすべてのＣＰＵコアに対応する選択信号（SEL）を出力することができる。また制御対象選択部１１３はサンプリング・クロックのタイミングでピーク値Ｉｐが大きい順に選択した所定個数のＣＰＵコアに対応する選択信号（SEL）を出力することができる。さらに制御対象選択部１１３は、常にピーク値Ｉｐが最大のＣＰＵコアに対応する選択信号（SEL）を出力することができる。
【００５２】
この場合、出力電流Ｉｙが参照信号Ｉｒｅｆより小さくなってブロック３１３でクロック制御条件が解除されるまで、サンプリング・クロックのタイミングで最も大きいピーク値のＣＰＵコアだけを順番にクロック制御することができる。たとえば、図５の時刻ｔ１で最もピーク値Ｉｐが大きいＣＰＵコア＃１をクロック制御した結果、時刻ｔ２で要求信号（PROCHOT_REQ#）がネゲートされたときは、制御信号（PROCHOT#1）を停止する。時刻ｔ２でも要求信号（PROCHOT_REQ#）がアサートされているときは、制御信号（PROCHOT#1）を維持しながらそのタイミングで最もピーク値Ｉｐが大きいＣＰＵコア＃３をクロック制御する。
【００５３】
そして、時刻ｔ３のタイミングで要求信号（PROCHOT_REQ#）がネゲートされたときは、その時点でクロック制御しているＣＰＵコア＃１、＃３の制御信号（PROCHOT#）を停止する。この制御方法では、サンプリング・クロックのタイミングでクロック制御の実行および停止をすることができるため、出力電流Ｉｙの大きさに応じたきめ細かな制御をしてパフォーマンスの低下を最小限に抑制しながらシャットダウンを防止することができる。
【００５４】
［第２の制御方法］
図７は、三角波の参照信号Ｉｒｅｆを利用して生成した要求信号（PROCHOT_REQ#）で制御信号（PROCHOT#）を出力および停止するようにした第２の制御方法を説明するための図である。図８は、第２の制御方法の動作手順を説明するためのフローチャートである。ブロック４０１で参照信号設定部１１１は、一例として周波数が１０ＫＨｚ（周期１００μｓ）で中心値がＩ３の三角波の参照信号Ｉｒｅｆを出力している。
【００５５】
一例として、参照信号Ｉｒｅｆの底部のピーク値Ｉ１は、ＰＳＵ１１の定格電流Ｉａに一致させ、頂部のピーク値Ｉ２は定格電流の１２５％に設定し、保護装置の動作電流Ｉｈは定格電流の１３０％としている。動作電流Ｉｈと頂部のピーク値Ｉ２の差はシャットダウンを防止するためのマージンである。制御対象選択部１１３は、各ＣＰＵコアの入力電流Ｉｘのピーク値Ｉｐに対して閾値Ｉｔｈ２を設定している。制御対象選択部１１３は、ＣＰＵコアの定格電流が異なる場合に、定格電流に応じた異なる値の閾値Ｉｔｈ２を設定することができる。
【００５６】
ブロック４０３でクロック制御判定部１１０は、連続的に参照信号Ｉｒｅｆと出力電流Ｉｙを比較している。制御対象選択部１１３は、ピーク検出部５３ａ〜５３ｄから、連続的に受け取ったピーク値Ｉｐと閾値Ｉｔｈ２とを比較する。制御対象選択部１１３はブロック４０５で閾値Ｉｔｈ２を越えたピーク値のＣＰＵコアをクロック制御の対象として選択し、対応する選択信号（SEL）を出力する。ブロック４０７でクロック制御判定部１１０は、時刻ｔ２で出力電流Ｉｙが参照信号Ｉｒｅｆより大きいと判断して、ブロック４０９で要求信号（PROCHOT_REQ#）をアサートする。ブロック４１１で制御対象選択部１１３は、ピーク値Ｉｐが閾値Ｉｔｈ２を超えているＣＰＵコアに対応する選択信号（SEL）を受け取っている場合はブロック４１３に移行する。
【００５７】
図７の例では、時刻ｔ２でＣＰＵコア＃１、＃２のピーク値Ｉｐが閾値Ｉｔｈ２を越えているためこれらがクロック制御の対象として選択され、制御対象選択部１１３はＣＰＵコア＃１、＃２に対応する制御信号（SEL1、SEL2）を出力している。ブロック４１３で制御信号出力部１１５は、要求信号（PROCHOT_REQ#）のアサートと制御信号（SEL1、SEL2）の出力により、クロック制御条件が成立したと判断してブロック４１５でＣＰＵコア＃１、＃２に制御信号（PROCHOT#1、#2）を出力する。その結果、ＣＰＵコア＃１、＃２がクロック制御されて入力電流Ｉｘおよび出力電流Ｉｙが低下する。
【００５８】
ブロック４１７で制御信号出力部１１５は、要求信号（PROCHOT_REQ#）がネゲートされるまで制御信号（PROCHOT#）を出力する。時刻ｔ３で要求信号（PROCHOT_REQ#）がネゲートされるとクロック制御条件が解除され、制御信号出力部１１５はブロック４１９でそれまで出力していた制御信号（PROCHOT#1、#2）を停止する。その結果、ＣＰＵコア＃１、＃２は、クロック制御が解除されて出力電流Ｉｙも増加する。
【００５９】
時刻ｔ４で要求信号（PROCHOT_REQ#）がアサートされたときには、ＣＰＵコア＃１、＃２、＃３のピーク値Ｉｐが閾値Ｉｔｈ２を越えているため、制御信号出力部１１５は、ＣＰＵコア＃１、＃２、＃３に制御信号（PROCHOT#1、#2、#3）を出力する。同様に時刻ｔ５では、要求信号（PROCHOT_REQ#）がネゲートされて、ＣＰＵコア＃１、＃２、＃３は、クロック制御が解除される。時刻ｔ４と時刻ｔ５の間で出力電流Ｉｙが一時的に動作電流Ｉｈを越えることがあるとしても５ｍｓ越えない限り保護装置は動作しない。動作電流Ｉｈに対する参照信号Ｉｒｅｆのマージンを多くすることで、出力電流Ｉｙが動作電流Ｉｈを越えないように制御することもできる。
【００６０】
ブロック４１９では、それまで出力していたすべての制御信号（PROCHOT#）を停止する例を説明したが、制御信号（PROCHOT#）を停止するＣＰＵコアは、出力電流Ｉｙの平均値Ｉａｖに応じて選択するようにしてもよい。たとえば、出力電流Ｉｙの平均値Ｉａｖが定格電流Ｉａよりも大きい場合はピーク値Ｉｐが最も小さいＣＰＵコアだけを選択し、平均値Ｉａｖが定格電流よりも小さくなったときにすべてのＣＰＵコアを選択することができる。その結果出力電流が大きいときにシャットダウンの防止を優先させ、平均値Ｉａｖが小さいときはパフォーマンス低下の抑制を優先させることができる。
【００６１】
ここで、参照信号Ｉｒｅｆを三角波信号にした場合と図５に示したように一定値信号にした場合とを比較してみる。一定値信号の場合は、出力電流Ｉｙが一定値Ｉｔｈ１を越えると常に要求信号（PROCHOT_REQ#）がアサートされて、選択されたＣＰＵコアがクロック制御される。三角波信号の場合は、出力電流Ｉｙが三角波信号の底部のピーク値Ｉ１（定格電流Ｉａ）を越えるとクロック制御が開始されるが、ピーク値Ｉ１を越えてもクロック制御されない時間帯も存在するため一定値信号を採用するよりもパフォーマンスの低下を抑制することができる。しかも出力電流Ｉｙが大きくなるに従って要求信号（PROCHOT_REQ#）がアサートされる時間が徐々に長くなり、クロック制御の時間も長くなるためシャットダウンを確実に防止することができる。
【００６２】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００６３】
１０  電源システム
１１  パワー・サプライ・ユニット（ＰＳＵ）
５７  マルチコアＣＰＵ
Ｉｒｅｆ  参照信号（電流）
Ｉｙ  ＰＳＵの出力電流
Ｉｘ  ＣＰＵコアの入力電流
Ｉｐ  ＣＰＵコアのピーク値
Ｉｔｈ１  出力電流Ｉｙに設定する閾値
Ｉｔｈ２  ピーク値Ｉｐに設定する閾値
Ｉｈ  保護装置の動作電流
Ｉａ  ＰＳＵの定格電流
【図１】
0005986138.tif 000002
【図２】
0005986138.tif 000003
【図３】
0005986138.tif 000004
【図４】
0005986138.tif 000005
【図５】
0005986138.tif 000006
【図６】
0005986138.tif 000007
【図７】
0005986138.tif 000008
【図８】
0005986138.tif 000009
【図９】
0005986138.tif 000010