(57)【要約】【課題】クロック周波数が低下する頻度を増加させずに、電源ノイズによるタイミングエラーの発生を抑制する。【解決手段】制御部１１は、演算命令を取得し、演算命令を取得するたびに、クロック信号ＣＬＫに同期して動作する回路群１２のうち、取得した演算命令に基づいて動作を行う動作回路の数を検出し、演算命令を取得するたびに、所定時間当たりの動作回路の増加数（＋ｘ）と閾値（Ｎｔｈ）との比較結果に基づいて、回路群１２においてタイミングエラーを発生させうる電源ノイズが発生するか否かを判定し、電源ノイズが発生すると判定したとき、クロック信号ＣＬＫの周波数を低下させる。【選択図】図１
2020098545.tif 000002
【特許請求の範囲】
【請求項１】
演算命令を取得し、
前記演算命令を取得するたびに、クロック信号に同期して動作する回路群のうち、取得した前記演算命令に基づいて動作を行う動作回路の数を検出し、
前記演算命令を取得するたびに、所定時間当たりの前記動作回路の増加数と閾値との比較結果に基づいて、前記回路群においてタイミングエラーを発生させうる電源ノイズが発生するか否かを判定し、
前記電源ノイズが発生すると判定したとき、前記クロック信号の周波数を低下させる、
処理をコンピュータに実行させる制御プログラム。
【請求項２】
前記演算命令を取得するたびに、前記演算命令に基づいて、前記回路群のうち、前記動作回路と、動作を行わない回路とを表す動作状態テーブルを生成し、記憶部に記憶する処理を前記コンピュータに実行させる請求項１に記載の制御プログラム。
【請求項３】
前記所定時間の前記動作状態テーブルの履歴に基づいて前記所定時間当たりの前記動作回路の増加数を算出する、処理を前記コンピュータに実行させる請求項２に記載の制御プログラム。
【請求項４】
前記閾値は、前記回路群のうちの同時に動作する回路数と、電源ノイズ量の測定結果との関係に基づいて予め算出される、請求項１乃至３の何れか一項に記載の制御プログラム。
【請求項５】
クロック信号に同期して動作する回路群と、
前記クロック信号を生成するクロック生成回路と、
演算命令を取得し、前記演算命令を取得するたびに、前記回路群のうち、取得した前記演算命令に基づいて動作を行う動作回路の数を検出し、前記演算命令を取得するたびに、所定時間当たりの前記動作回路の増加数と閾値との比較結果に基づいて、前記回路群においてタイミングエラーを発生させうる電源ノイズが発生するか否かを判定し、前記電源ノイズが発生すると判定したとき、前記クロック生成回路に、前記クロック信号の周波数を低下させる制御部と、
を有する情報処理装置。
【請求項６】
制御部が、演算命令を取得し、
前記制御部が、前記演算命令を取得するたびに、クロック信号に同期して動作する回路群のうち、取得した前記演算命令に基づいて動作を行う動作回路の数を検出し、
前記制御部が、前記演算命令を取得するたびに、所定時間当たりの前記動作回路の増加数と閾値との比較結果に基づいて、前記回路群においてタイミングエラーを発生させうる電源ノイズが発生するか否かを判定し、
前記制御部が、前記電源ノイズが発生すると判定したとき、前記クロック信号の周波数を低下させる、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラム、情報処理装置及び制御方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integrated circuit）などの半導体集積回路において、計算負荷や、動作する回路の一定時間当たりの増加数が大きく変化するとき、電源ノイズ（同時スイッチングノイズと呼ばれる場合もある）が発生する場合がある。電源ノイズが発生した場合、電源電圧の低下によって、半導体集積回路内の回路に十分な電圧が供給されずに回路遅延が発生してしまいタイミングエラーを引き起こす可能性がある。
【０００３】
従来、電源ノイズに起因するタイミングエラーの発生を回避するために用いられる適応的クロック制御（ＡＣＣ：Adaptive Clocking Control）回路があった（たとえば、特許文献１参照）。ＡＣＣ回路は、電源ノイズモニタを用いて電源電圧の低下を監視し、電源電圧がタイミングエラーを発生させる閾値以下になった場合に、半導体集積回路内の回路に供給するクロック信号の周波数を低下させることでタイミングエラーの発生を回避する。ＡＣＣ回路を用いない場合、半導体集積回路の内部で発生する電源ノイズが最大となるときのタイミングエラーを考慮してクロック周波数の決定が行われるが、ＡＣＣ回路を用いる場合には、このような決定を行わなくてよくなる。従来のＡＣＣ回路の電源ノイズモニタには、電源電圧の低下を直接検出する電圧センサや、電源電圧低下による信号遅延を測定する遅延測定回路などがある。
【０００４】
なお、従来、瞬時電力により電源やバッテリへの影響を抑制するため、半導体集積回路に関する新たな状態への移行を行う前に、新たな状態における電力を予想し、予想した電力に基づいてクロック周波数の制御を行う技術があった（たとえば、特許文献２参照）。また、従来、想定する電源電圧変動の周波数より速いサンプリング速度で電源電圧を検出した結果に基づいて、システムが誤動作を行う電圧降下が発生する場合にクロックを停止させる技術があった（たとえば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−１７６７１号公報
【特許文献２】特表２０１８−５０５４７０号公報
【特許文献３】特開２０１７−５８９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のように従来のＡＣＣ回路では、電源電圧を直接検出する方式や、電源電圧の低下による信号遅延を測定する方式が採用されている。そのため、電源ノイズがＡＣＣ回路に伝搬するまでの時間や、電源ノイズモニタの検知遅延などの遅延時間の影響により、クロック周波数の低下を行えるのは、本質的に電源ノイズの発生後となり、突発的（瞬間的）な電源ノイズに対応することが困難である。そこで、従来のＡＣＣ回路では、上記の遅延時間を考慮して、余裕をもってクロック周波数の低下を開始可能なように閾値が比較的大きく設定されることになる。
【０００７】
しかし、その場合、タイミングエラーを発生させない比較的小さな電源ノイズ（たとえば、計算負荷の低いプログラムの実行中に発生する）の発生時にもクロック周波数が低下され、クロック周波数が低下する頻度が増加する可能性があった。
【０００８】
１つの側面では、本発明は、クロック周波数が低下する頻度を増加させずに、電源ノイズによるタイミングエラーの発生を抑制可能な制御プログラム、情報処理装置及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの実施態様では、演算命令を取得し、前記演算命令を取得するたびに、クロック信号に同期して動作する回路群のうち、取得した前記演算命令に基づいて動作を行う動作回路の数を検出し、前記演算命令を取得するたびに、所定時間当たりの前記動作回路の増加数と閾値との比較結果に基づいて、前記回路群においてタイミングエラーを発生させうる電源ノイズが発生するか否かを判定し、前記電源ノイズが発生すると判定したとき、前記クロック信号の周波数を低下させる、処理をコンピュータに実行させる制御プログラムが提供される。
【００１０】
また、１つの実施態様では、情報処理装置が提供される。
また、１つの実施態様では、制御方法が提供される。
【発明の効果】
【００１１】
１つの側面では、クロック周波数が低下する頻度を増加させずに、電源ノイズによるタイミングエラーの発生を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の情報処理装置の一例を示す図である。
【図２】第１の実施の形態のＡＣＣ駆動制御の一例の流れを示すフローチャートである。
【図３】電源ノイズを検出する電源ノイズモニタの一例を示す図である。
【図４】電源ノイズモニタを用いたＡＣＣ駆動制御の一例を示す波形図である。
【図５】電源ノイズモニタを用いたＡＣＣ駆動制御の他の例を示す波形図である。
【図６】電源ノイズを用いたＡＣＣ駆動制御における状態遷移図である。
【図７】第１の実施の形態のＡＣＣ駆動制御における状態遷移図である。
【図８】第１の実施の形態のＡＣＣ駆動制御の一例を示す波形図である。
【図９】第１の実施の形態のＡＣＣ駆動制御の他の例を示す波形図である。
【図１０】第２の実施の形態の情報処理装置の一例を示す図である。
【図１１】電源ノイズモニタの配置例を示す図である。
【図１２】Ｎｔｈの事前学習処理の一例の流れを示すフローチャートである。
【図１３】Ｎｍとノイズ量との一例の関係を示す図である。
【図１４】電源ノイズの伝搬特性を取得する事前学習処理の一例の流れを示すフローチャートである。
【図１５】電源ノイズモニタと動作回路との距離と、ノイズ量との一例の関係を示す図である。
【図１６】回路群の動作タイミングの例を示す図である。
【発明を実施するための形態】
【００１３】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の情報処理装置の一例を示す図である。
【００１４】
情報処理装置１０は、たとえば、１または複数のチップのＬＳＩにより実現される。情報処理装置１０は、たとえば、１つのＧＰＵ（Graphics Processing Unit）などのプロセッサであってもよい。
【００１５】
情報処理装置１０は、制御部１１、回路群１２、クロック生成回路１３、メモリ１４を有する。
制御部１１は、たとえば、図示しない入力回路を介して演算命令を取得し、演算命令を取得するたびに、クロック信号ＣＬＫに同期して動作する回路群１２のうち、取得した演算命令に基づいて動作を行う動作回路の数を検出する。そして、制御部１１は、演算命令を取得するたびに、所定時間（Δｔ）当たりの動作回路の増加数と閾値（Ｎｔｈ）との比較結果に基づいて、回路群１２においてタイミングエラーを発生させうる電源ノイズが発生するか否かを判定する。たとえば、制御部１１は、Δｔ当たりの動作回路の増加数（以下＋ｘとする）が、Ｎｔｈ以上である場合、タイミングエラーを発生させうる電源ノイズが発生すると判定する。制御部１１は、タイミングエラーを発生させうる電源ノイズが発生すると判定したとき、回路群１２に供給するクロック信号ＣＬＫの周波数を低下させる。
【００１６】
Ｎｔｈは、たとえば、出荷試験時などにおいて、電源ノイズモニタを用いて事前に算出（学習）される。たとえば、制御部１１は、同時に動作する動作回路数を増やしていったときに生じる電源ノイズ量（以下、単にノイズ量という）が、タイミングエラーが発生するノイズ量（許容値）を超えたとき、そのときの動作回路数をＮｔｈとする。なお、Ｎｔｈの事前学習処理の例については、第２の実施の形態において後述する。
【００１７】
Δｔは、たとえば、出荷試験時に設定される。たとえば、動作回路の所定数の増加がどのくらいの期間で発生した場合に電源ノイズが発生するかが検出され、その期間に基づいてΔｔが設定される。たとえば、クロック信号ＣＬＫの４周期分の長さの間で、動作回路が所定数増加したときに電源ノイズが発生した場合、Δｔは、クロック信号ＣＬＫの４周期分の長さに設定される。
【００１８】
制御部１１は、たとえば、制御回路１１ａ、ＡＣＣ回路１１ｂ、記憶部１１ｃを有する。
制御回路１１ａは、演算命令を取得するたびに、回路群１２のうち取得した演算命令に基づいて動作を行う動作回路の数を検出する。たとえば、演算命令がある乗算処理を指示するものである場合には、回路群１２のうちその乗算処理を行う乗算器が動作回路として検出される。たとえば、演算命令には、どの回路を用いるかについての情報も含まれている。または、制御回路１１ａが演算命令から、どの回路を用いるか決定してもよい。
【００１９】
また、制御回路１１ａは、回路群１２のうち、演算命令に基づいた動作を行う動作回路と、動作を行わない回路とを表す動作状態テーブル１１ｄを、演算命令を取得するたびに、演算命令に基づいて生成する。
【００２０】
なお、制御回路１１ａは、生成した動作状態テーブル１１ｄを記憶部１１ｃに保持させる。また、制御回路１１ａは、たとえば、現在からΔｔ前までの動作状態テーブル１１ｄの履歴を記憶部１１ｃに保持させる。なお、制御回路１１ａは、過去に得られた動作状態テーブル１１ｄの代りに、過去に取得した演算命令に対応した動作回路数を記憶部１１ｃに保持させてもよい。たとえば、制御回路１１ａは、現在からΔｔ前までの動作回路数の履歴を記憶部１１ｃに保持させる。
【００２１】
また、制御回路１１ａは、保持した動作状態テーブル１１ｄの履歴または動作回数の履歴と、現在の動作状態テーブル１１ｄに基づいて、＋ｘ≧Ｎｔｈであるか否かを判定する。制御回路１１ａは、＋ｘ≧Ｎｔｈである場合には、ＡＣＣの発動（クロック信号ＣＬＫの周波数の低下）を指示する信号をＡＣＣ回路１１ｂに送信する。制御回路１１ａは、＋ｘ＜Ｎｔｈの場合、ＡＣＣが発動中であれば、クロック信号ＣＬＫの周波数の回復（上昇）を指示する信号を、ＡＣＣ回路１１ｂに送信する。
【００２２】
また、制御回路１１ａは、メモリ１４に接続されており、演算命令に応じて、回路群１２に供給するデータをメモリ１４から読み出す。また、制御回路１１ａは、取得した演算命令に応じた動作を回路群１２に実行させるための命令と、メモリ１４から読み出したデータを回路群１２に送信する。
【００２３】
ＡＣＣ回路１１ｂは、制御回路１１ａからＡＣＣの発動を指示する信号を受信した場合、クロック生成回路１３に、クロック信号ＣＬＫの周波数を低下させる制御信号を送信する。また、ＡＣＣ回路１１ｂは、制御回路１１ａからクロック信号ＣＬＫの周波数の回復を指示する信号を受信した場合、クロック生成回路１３に、クロック信号ＣＬＫの周波数を回復させる制御信号を送信する。
【００２４】
なお、たとえば、情報処理装置１０の出荷試験時において、回路群１２において発生する電源ノイズに起因する回路遅延に基づいて、タイミングエラーを発生させないクロック信号ＣＬＫの周波数が予め決定される。ＡＣＣ回路１１ｂは、ＡＣＣの発動を行う際、たとえば、その周波数にクロック信号ＣＬＫの周波数を下げる。
【００２５】
記憶部１１ｃは、動作状態テーブル１１ｄを記憶する。記憶部１１ｃは、動作回路数の履歴を記憶してもよい。記憶部１１ｃは、たとえば、ＲＡＭ（Random Access Memory）などのメモリである。
【００２６】
上記のような制御部１１は、情報処理装置１０が複数のプロセッサコア（以下単にコアという）を有するプロセッサである場合、他のコアを制御するマスターコアとして機能する。なお、各コアは１つのプロセッサとして機能する。また、制御部１１は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路で実現されてもよい。
【００２７】
回路群１２は、クロック生成回路１３から供給されるクロック信号ＣＬＫに同期して、制御部１１が送信する命令やデータに基づいた動作を行う。また、回路群１２には、電源電圧ＶＤＤが印加される。
【００２８】
回路群１２として、たとえば、加算器や乗算器などの演算器、ＲＡＭなどがある。特に、プロセッサにおいては、演算器が電源ノイズのノイズ源となりやすい。
クロック生成回路１３は、クロック信号ＣＬＫを生成するとともに、制御部１１から供給される制御信号に基づいて、クロック信号ＣＬＫの周波数を変える。クロック生成回路１３は、たとえば、ＰＬＬ（Phase Locked Loop）回路やＤＬＬ（Delay Locked Loop）回路などである。以下では、クロック生成回路１３は、ＰＬＬ回路であるものとして説明する。ＰＬＬ回路は、参照クロック信号ＣＬＫＲの周波数の整数倍の周波数をもつクロック信号ＣＬＫを出力する。ＰＬＬ回路に含まれる分周器の分周比を、制御部１１から供給される制御信号に基づいて変えることで、クロック信号ＣＬＫの周波数を変えることができる。
【００２９】
メモリ１４は、たとえば、フラッシュメモリなどの不揮発性メモリである。メモリ１４には、演算命令の実行に用いられるデータや、制御部１１が実行する制御プログラムなどが記憶される。
【００３０】
なお、図１の例では、ＡＣＣ回路１１ｂが出力する制御信号により、クロック生成回路１３がクロック信号ＣＬＫの周波数を変えるものとしたがこれに限定されない。クロック生成回路１３が出力するクロック信号ＣＬＫをＡＣＣ回路１１ｂが受け、その周波数を、ＡＣＣ回路１１ｂが変えるようにしてもよい。
【００３１】
以下、たとえば、メモリ１４に記憶された制御プログラムが制御部１１に読み出されて実行されることによって行われる第１の実施の形態の制御方法（以下第１の実施の形態のＡＣＣ駆動制御という）の一例を説明する。
【００３２】
図２は、第１の実施の形態のＡＣＣ駆動制御の一例の流れを示すフローチャートである。
制御部１１は、たとえば、図示しない入力回路を介して演算命令を取得するごとに、以下の処理を行う。
【００３３】
制御部１１は、演算命令を取得すると（ステップＳ１）、回路群１２のうち、演算命令に基づいて動作を行う動作回路の数を検出する（ステップＳ２）。そして、制御部１１は、動作状態テーブル１１ｄを生成する（ステップＳ３）。なお、生成された動作状態テーブル１１ｄは記憶部１１ｃに保持される。
【００３４】
図１に動作状態テーブル１１ｄの例として、ある演算命令Ａの取得時に生成される動作状態テーブル１１ｄ１と、演算命令Ａを取得してからΔｔ後に、演算命令Ｂを取得したときに生成される動作状態テーブル１１ｄ２が示されている。図１の例では、動作状態テーブル１１ｄ１，１１ｄ２は、コア番号が１〜ｎの各コアに含まれる回路番号が１〜ｍのｍ個の回路、すなわちｎ×ｍ個の回路の各々が動作するか否かを示している。動作状態テーブル１１ｄ１，１１ｄ２において、“ｏｎ”は、その回路が動作することを示しており、“ｏｆｆ”は、その回路が動作しないことを示している。
【００３５】
ステップＳ３の後、制御部１１は、保持した動作状態テーブル１１ｄの履歴と、今回生成した動作状態テーブル１１ｄ（たとえば、上記の例では、動作状態テーブル１１ｄ２）に基づいて、＋ｘを算出する（ステップＳ４）。そして、制御部１１は、＋ｘ≧Ｎｔｈであるか否かを判定する（ステップＳ５）。
【００３６】
制御部１１は、＋ｘ≧Ｎｔｈである場合には、クロック生成回路１３にクロック信号ＣＬＫの周波数を低下させる（ステップＳ６）。
たとえば、図１において、動作状態テーブル１１ｄ１が得られたときの動作回路数に対して、動作状態テーブル１１ｄ２が得られたときの動作回路数の増加数＋ｘが、＋ｘ≧Ｎｔｈである場合に、ＡＣＣ回路１１ｂによるＡＣＣが発動する。そして、クロック生成回路１３が出力するクロック信号ＣＬＫの周波数が低下する。
【００３７】
一方、制御部１１は、＋ｘ＜Ｎｔｈの場合、ＡＣＣが起動中であるか否かを判定する（ステップＳ７）。ＡＣＣが起動中である場合、制御部１１は、クロック生成回路１３にクロック信号ＣＬＫの周波数を回復させる（ステップＳ８）。制御部１１は、クロック信号ＣＬＫの周波数を急激に上昇させるとノイズが発生する可能性があるため、クロック信号ＣＬＫの周波数を、たとえば、段階的に上昇させる。
【００３８】
ステップＳ６，Ｓ８の処理後、またはステップＳ７の処理にてＡＣＣが起動中ではないと判定した場合、制御部１１は、取得した演算命令に応じた動作を回路群１２に実行させるための命令と、データを回路群１２に送信する（ステップＳ９）。なお、回路群１２に送信するデータはメモリ１４から読み出される。これにより、制御部１１が１回、演算命令を取得した際の処理が終わる。
【００３９】
なお、制御部１１は、演算命令によっては、回路群１２のある回路から出力される演算結果などのデータを受信して、そのデータを回路群１２の別の回路に送信するような処理を行ってもよい。
【００４０】
上記のような第１の実施の形態のＡＣＣ駆動制御の効果を説明する前に、比較例として電源ノイズモニタを用いてクロック信号ＣＬＫの周波数を変化させるＡＣＣ駆動制御を説明する。
【００４１】
（比較例）
図３は、電源ノイズを検出する電源ノイズモニタの一例を示す図である。
電源ノイズモニタ２０は、ディレイライン２１，２２、バッファ２３、フリップフロップ（図３では“ＦＦ”と表記されている）２４を有する。
【００４２】
ディレイライン２１，２２は、たとえば、複数直列に接続されたバッファを有し、クロック信号ＣＬＫを同じ遅延時間、遅延させるように設定されている。ただし、ディレイライン２１には、電源電圧ＶＤＤが印加され、ディレイライン２２には、電源ノイズの影響を受けない固定の参照電圧ＶＲＥＦが印加される。このため、電源ノイズが発生した場合、ディレイライン２１における遅延時間が、ディレイライン２２における遅延時間よりも長くなる。
【００４３】
ディレイライン２１の出力端子は、フリップフロップ２４のクロック入力端子に接続され、ディレイライン２２の出力端子は、バッファ２３を介してフリップフロップ２４のデータ入力端子に接続される。
【００４４】
このような電源ノイズモニタ２０では、電源ノイズが発生していない場合には、ディレイライン２１の出力であるクロック信号ＣＬＫａの立ち下がりタイミングは、バッファ２３の出力であるデータ信号ＤＡＴＡの立ち下がりタイミングよりも早い。そのため、フリップフロップ２４が、クロック信号ＣＬＫａの立ち下がりタイミングでデータ信号ＤＡＴＡを取り込む場合、フリップフロップ２４の出力信号ＯＵＴは１となる。
【００４５】
一方、電源ノイズが発生し、ディレイライン２１における遅延時間が増加した場合、クロック信号ＣＬＫａの立ち下がりタイミングが、データ信号ＤＡＴＡの立ち下がりタイミングよりも遅くなる可能性がある。この場合、フリップフロップ２４の出力信号ＯＵＴは０となる。
【００４６】
このような電源ノイズモニタ２０を用いたＡＣＣ駆動制御では、出力信号ＯＵＴが０になった場合、タイミングエラーを発生させる電源ノイズが発生したものとして、クロック信号ＣＬＫの周波数の低下が行われる。
【００４７】
図４は、電源ノイズモニタを用いたＡＣＣ駆動制御の一例を示す波形図である。
図４には、クロック信号ＣＬＫ、電源電圧ＶＤＤ、クロック信号ＣＬＫの周波数ＦＱの時間変化の例が示されている。
【００４８】
電圧ＶＬＩＭは、たとえば、図１に示した回路群１２において、タイミングエラーが発生しない下限の電源電圧ＶＤＤである。電源電圧ＶＤＤが電圧ＶＬＩＭよりも小さくなると、タイミングエラーが発生する。
【００４９】
電圧ＶＮは電源ノイズモニタ２０において出力信号ＯＵＴが０になる電源電圧ＶＤＤである。電圧ＶＮは、電圧ＶＬＩＭよりも所定の電圧ｇｄ（以下、ガードバンドｇｄという）だけ高くなるように設定されている。電圧ＶＮは、電源ノイズの発生を検知する閾値として機能する。
【００５０】
図４の例では、電源電圧ＶＤＤはタイミングｔ１に電圧ＶＮまで降下し、タイミングｔ２に電圧ＶＬＩＭまで降下する。図４の例では、タイミングｔ１から、クロック信号ＣＬＫの周波数ＦＱが所定の周波数ＦＱａまで下がりきるタイミングｔ３までの時間（ＡＣＣの発動遅延ｔｄ）の間に、電源電圧ＶＤＤが電圧ＶＬＩＭより小さくなるため、タイミングエラーが発生してしまう。ガードバンドｇｄが小さすぎると、このような問題が発生する可能性がある。
【００５１】
なお、電源電圧ＶＤＤが回復していき、タイミングｔ４で電圧ＶＮに達した場合、電源ノイズモニタ２０において出力信号ＯＵＴは１になり、クロック信号ＣＬＫの周波数ＦＱは上昇していく。図４の例では、周波数ＦＱは段階的に上昇している。
【００５２】
図５は、電源ノイズモニタを用いたＡＣＣ駆動制御の他の例を示す波形図である。
図５には、電源電圧ＶＤＤとクロック信号ＣＬＫの時間変化の例が示されている。
ガードバンドｇｄが大きすぎる場合、タイミングエラーが生じない、比較的小さい電源ノイズ（たとえば、計算負荷の低いプログラムの実行中に発生する）や低周波ノイズが発生する場合でもＡＣＣが発動し、クロック信号ＣＬＫの周波数が低下する。図５では、電源電圧ＶＤＤが電圧ＶＮまで降下するタイミングｔ５から、タイミングｔ６までＡＣＣが発動している例が示されている。このようにガードバンドｇｄが大きすぎる場合、クロック周波数を低下させる頻度が過剰に高くなり、たとえば、回路群１２において演算処理を行う時間が長くなる可能性がある。
【００５３】
図６は、電源ノイズを用いたＡＣＣ駆動制御における状態遷移図である。
状態Ｔ１は、通常のクロック信号ＣＬＫの周波数が用いられる状態である。電源ノイズが未検知のとき（図３の電源ノイズモニタ２０が用いられる場合、出力信号ＯＵＴが１のとき）、状態Ｔ１が維持される。状態Ｔ１において、電源ノイズが検知されたとき（図３の電源ノイズモニタ２０が用いられる場合、出力信号ＯＵＴが０のとき）、状態Ｔ１は状態Ｔ２に遷移する。
【００５４】
状態Ｔ２は、クロック信号ＣＬＫの周波数を低下させる状態である。状態Ｔ２において、電源ノイズが検知されているとき、状態Ｔ２が維持される。状態Ｔ２において、電源ノイズが未検知となると、状態Ｔ２は状態Ｔ３に遷移する。
【００５５】
状態Ｔ３は、クロック信号ＣＬＫの周波数を回復（上昇）させる状態である。状態Ｔ３において、電源ノイズが検知されると、状態Ｔ３は状態Ｔ２に遷移する。状態Ｔ３において、電源ノイズが未検知であるとき、状態Ｔ３が維持され、一定期間、電源ノイズが未検知の状態が続くと、状態Ｔ３は状態Ｔ１に遷移する。
【００５６】
図７は、第１の実施の形態のＡＣＣ駆動制御における状態遷移図である。
状態Ｔ５は、通常のクロック信号ＣＬＫの周波数が用いられる状態である。Δｔ当たりの動作回路の増加数（＋ｘ）が、閾値（Ｎｔｈ）より小さい場合、状態Ｔ５が維持される。状態Ｔ５において、＋ｘ≧Ｎｔｈのとき、状態Ｔ５は状態Ｔ６に遷移する。
【００５７】
状態Ｔ６は、クロック信号ＣＬＫの周波数を低下させる状態である。状態Ｔ６において、＋ｘ≧Ｎｔｈのとき、状態Ｔ６が維持される。状態Ｔ６において、＋ｘ＜Ｎｔｈとなると、状態Ｔ６は状態Ｔ７に遷移する。
【００５８】
状態Ｔ７は、クロック信号ＣＬＫの周波数を回復（上昇）させる状態である。状態Ｔ７において、＋ｘ≧Ｎｔｈとなると、状態Ｔ７は状態Ｔ６に遷移する。状態Ｔ７において、＋ｘ＜Ｎｔｈであるとき、状態Ｔ７が維持され、一定期間、＋ｘ＜Ｎｔｈの状態が続くと、状態Ｔ７は状態Ｔ５に遷移する。
【００５９】
図８は、第１の実施の形態のＡＣＣ駆動制御の一例を示す波形図である。
図８には、電源電圧ＶＤＤ、クロック信号ＣＬＫの周波数ＦＱの時間変化の例が示されている。なお、比較のため、電源ノイズモニタ２０を用いたＡＣＣ駆動制御におけるクロック信号ＣＬＫの周波数ＦＱの時間変化の例についても図示されている。
【００６０】
第１の実施の形態のＡＣＣ駆動制御では、制御部１１が演算命令を取得すると（タイミングｔ１０）、＋ｘ≧Ｎｔｈの場合、演算命令が実行される前にＡＣＣの処理が開始する。一方、電源ノイズモニタ２０を用いたＡＣＣ駆動制御では、電源電圧ＶＤＤが電圧ＶＮまで降下したとき（タイミングｔ１１）、ＡＣＣの処理が開始する。
【００６１】
第１の実施の形態のＡＣＣ駆動制御では、発動遅延があるものの、演算命令が実行される前にＡＣＣの処理が開始されるため、図８の例では、電源電圧ＶＤＤが電圧ＶＬＩＭに降下する前に、周波数ＦＱが周波数ＦＱａまで低下されている（タイミングｔ１２）。
【００６２】
一方、電源ノイズモニタ２０を用いたＡＣＣ駆動制御では、発動遅延により、図８の例では、電源電圧ＶＤＤが電圧ＶＬＩＭより小さくなった後に、周波数ＦＱが周波数ＦＱａまで低下されている（タイミングｔ１３）。このためタイミングエラーが発生する可能性がある。
【００６３】
図９は、第１の実施の形態のＡＣＣ駆動制御の他の例を示す波形図である。
図９には、電源電圧ＶＤＤとクロック信号ＣＬＫの時間変化の例が示されている。なお、比較のため、電源ノイズモニタ２０を用いたＡＣＣ駆動制御におけるクロック信号ＣＬＫの時間変化の例についても図示されている。
【００６４】
前述のように、電源ノイズモニタ２０を用いたＡＣＣ駆動制御では、ガードバンドｇｄが大きすぎる場合、タイミングエラーが生じない、比較的小さい電源ノイズや低周波ノイズが発生する場合でもＡＣＣが発動し、クロック信号ＣＬＫの周波数が低下する。図９では、電源電圧ＶＤＤが電圧ＶＮまで降下するタイミングｔ１４から、タイミングｔ１５までＡＣＣが発動している例が示されている。
【００６５】
これに対して、第１の実施の形態のＡＣＣ駆動制御では、＋ｘ＜Ｎｔｈである場合には、ＡＣＣが発動されないため、電源ノイズモニタ２０を用いたＡＣＣにおいて生じるような、過剰な頻度でのＡＣＣの発動を抑制できる。このため、回路群１２において演算処理を行う時間が長くなることを抑制できる。
【００６６】
以上のように、第１の実施の形態のＡＣＣ駆動制御では、＋ｘとＮｔｈとの比較結果に基づいて、タイミングエラーを発生させうる電源ノイズが発生するか否かを判定し、その電源ノイズが発生すると判定したとき、クロック信号ＣＬＫの周波数を低下させる。このため、過剰な頻度でのＡＣＣの発動が抑制され、クロック周波数が低下する頻度を増加させずに、電源ノイズによるタイミングエラーの発生を抑制できる。
【００６７】
また、第１の実施の形態のＡＣＣ駆動制御は、ロジック回路を用いて実現できるため、ＡＳＩＣ回路に好適である。
（第２の実施の形態）
図１０は、第２の実施の形態の情報処理装置の一例を示す図である。図１０において、図１に示した第１の実施の形態の情報処理装置１０と同様の要素については同一符号が付されている。
【００６８】
第２の実施の形態の情報処理装置３０において、制御部３１のＡＣＣ回路３１ａは、たとえば、出荷試験時などにおいて、回路群１２に配置された複数の電源ノイズモニタ３２ａ１〜３２ａｎにおけるノイズ量の測定結果に基づいて、Ｎｔｈを算出する。
【００６９】
電源ノイズモニタ３２ａ１〜３２ａｎは、電源電圧の低下を直接検出する電圧センサであってもよいし、電源電圧低下による信号遅延を測定する遅延測定回路であってもよい。ただし、電源ノイズモニタ３２ａ１〜３２ａｎは、ノイズ量またはノイズ量に相当する値を出力する。
【００７０】
図１１は、電源ノイズモニタの配置例を示す図である。
図１１には、情報処理装置３０がＬＳＩであり、図１０に示した回路群１２が、６×１６個の演算器を含む例が示されている。図１１の例では、演算器（たとえば、演算器３３ａ１）は、１６個のコア（たとえば、コア３３）のそれぞれに６つずつ含まれている。なお、図１１では、制御回路１１ａのほかに、入出力回路３４（「Ｉ／Ｏ」と表記されている）が図示されている。図１１では、図１０に示した記憶部１１ｃ、クロック生成回路１３、メモリ１４、ＡＣＣ回路３１ａは図示が省略されている。
【００７１】
電源ノイズモニタ（たとえば、電源ノイズモニタ３２ａ１）は、図１１の例では、各コアに１つずつ配置されている。
以下、ＡＣＣ回路３１ａによるＮｔｈの事前学習処理の例を説明する。
【００７２】
図１２は、Ｎｔｈの事前学習処理の一例の流れを示すフローチャートである。
まずＡＣＣ回路３１ａは、同時に動作させる回路数を示すＮｍを１に初期設定する（ステップＳ１０）。そして、ＡＣＣ回路３１ａは、回路群１２の全体（全回路）を低負荷状態（非動作状態）とする（ステップＳ１１）。たとえば、ＡＣＣ回路３１ａは、クロック生成回路１３に、全回路へのクロック信号ＣＬＫの供給を停止させる。
【００７３】
その後、ＡＣＣ回路３１ａは、電源ノイズモニタ３２ａ１〜３２ａｎに、電源ノイズの測定を開始させ（ステップＳ１２）、Ｎｍ個の回路の動作を開始させる（ステップＳ１３）。たとえば、ＡＣＣ回路３１ａは、クロック生成回路１３に、Ｎｍ個の回路へのクロック信号ＣＬＫの供給を行わせる。
【００７４】
そして、ＡＣＣ回路３１ａは、Ｎｍと測定されたノイズ量（たとえば、電源電圧ＶＤＤの最大低下量）を、たとえば、記憶部１１ｃに記憶し（ステップＳ１４）、ノイズ量が許容値を超えるか否かを判定する（ステップＳ１５）。なお、記憶されるノイズ量は、電源ノイズモニタ３２ａ１〜３２ａｎのそれぞれが測定したノイズ量のうち、最も大きいノイズ量である。許容値は、タイミングエラーを生じさせないノイズ量の上限である。ノイズ量が許容値を超えるとタイミングエラーが生じる。
【００７５】
ノイズ量が許容値を超えない場合、ＡＣＣ回路３１ａは、Ｎｍを１増やし（ステップＳ１６）、ステップＳ１１からの処理を繰り返す。
図１３は、Ｎｍとノイズ量との一例の関係を示す図である。図１３において横軸はＮｍを表し、縦軸はノイズ量を表す。
【００７６】
ノイズ量は、Ｎｍが増加するたびに大きくなる。図１３では、Ｎｍの増加に比例してノイズ量が増加する例が示されている。
ノイズ量が許容値を超える場合、ＡＣＣ回路３１ａは、そのときのＮｍを前述の閾値（Ｎｔｈ）とし（ステップＳ１７）、事前学習処理を終える。ＡＣＣ回路３１ａは、決定したＮｔｈを、制御回路１１ａに送信してもよいし記憶部１１ｃに記憶してもよい。
【００７７】
なお、図１２の処理は、ＡＣＣ回路３１ａの代りに、制御回路１１ａが行ってもよい。
上記のような事前学習処理によってＮｔｈを決めることで、情報処理装置３０の製造ばらつきに起因した演算命令とノイズ量との関係のばらつきによる、ＡＣＣ駆動制御の精度悪化を抑制できる。
【００７８】
なお、上記の図１２のステップＳ１４の処理で記憶部１１ｃに記憶されたＮｍとノイズ量との関係は、たとえば、出荷試験時に、電源電圧ＶＤＤの大きさを決定する際や、不良チップ検出の際などに用いられる。
【００７９】
また、ＡＣＣ回路３１ａは、電源ノイズの伝搬特性を事前学習処理により取得してもよい。
図１４は、電源ノイズの伝搬特性を取得する事前学習処理の一例の流れを示すフローチャートである。
【００８０】
まずＡＣＣ回路３１ａは、電源ノイズモニタ３２ａ１〜３２ａｎのうち、ある電源ノイズモニタ（以下電源ノイズモニタ３２ａ１とする）に最も近い回路を、回路群１２の中から選択する（ステップＳ２０）。そして、ＡＣＣ回路３１ａは、回路群１２の全体（全回路）を低負荷状態（非動作状態）とする（ステップＳ２１）。たとえば、ＡＣＣ回路３１ａは、クロック生成回路１３に、全回路へのクロック信号ＣＬＫの供給を停止させる。
【００８１】
その後、ＡＣＣ回路３１ａは、電源ノイズモニタ３２ａ１に、電源ノイズの測定を開始させ（ステップＳ２２）、選択した回路の動作を開始させる（ステップＳ２３）。たとえば、ＡＣＣ回路３１ａは、クロック生成回路１３に、選択した回路へのクロック信号ＣＬＫの供給を行わせる。
【００８２】
そして、ＡＣＣ回路３１ａは、電源ノイズモニタ３２ａ１と選択した回路との距離と、電源ノイズモニタ３２ａ１が測定したノイズ量を、たとえば、記憶部１１ｃに記憶する（ステップＳ２４）。その後、ＡＣＣ回路３１ａは、選択した回路が、電源ノイズモニタ３２ａ１との距離が最大のものであるか否かを判定する（ステップＳ２５）。ＡＣＣ回路３１ａは、選択した回路が、電源ノイズモニタ３２ａ１との距離が最大のものでない場合、次に電源ノイズモニタ３２ａ１に近い回路を選択し（ステップＳ２６）、ステップＳ２１からの処理を繰り返す。
【００８３】
ＡＣＣ回路３１ａは、選択した回路が、電源ノイズモニタ３２ａ１との距離が最大のものである場合、処理を終了する。
図１５は、電源ノイズモニタと動作回路との距離と、ノイズ量との一例の関係を示す図である。図１５において横軸は電源ノイズモニタと動作回路との距離を表し、縦軸はノイズ量を表す。電源ノイズモニタと動作回路との距離が遠いほど、ノイズ量は小さくなる。
【００８４】
なお、図１４の処理は、ＡＣＣ回路３１ａの代りに、制御回路１１ａが行ってもよい。
上記のステップＳ２４の処理で記憶部１１ｃに記憶された電源ノイズモニタ３２ａ１と選択した回路との距離と、電源ノイズモニタ３２ａ１が測定したノイズ量との関係は、たとえば、制御回路１１ａが回路群１２の動作タイミングを決定する際などに用いられる。
【００８５】
図１６は、回路群の動作タイミングの例を示す図である。
“Ｃａｓｅ  １”では、１６個のコアの全てがあるタイミングにおいて同時に非動作状態（“ｉｄｌｅ”）から、動作状態（“ｒｕｎ”）に切り替わっている。この場合、大きな電源ノイズが発生する可能性がある。そのため、制御回路１１ａは、回路群１２に“Ｃａｓｅ  ２”のような間引き動作を行わせたり、“Ｃａｓｅ  ３”のようにコアごとに段階的に動作を開始させたりする。
【００８６】
制御回路１１ａは、たとえば、図１に示したような動作状態テーブル１１ｄと、上記の距離とノイズ量との関係に基づいて、互いの電源ノイズの影響が大きくなる、配置位置の近い回路同士を同時に動作させないような制御を行う。
【００８７】
ところで、上記第１及び第２の実施の形態のＡＣＣ駆動制御の処理内容は、情報処理装置１０，３０に制御プログラムを実行させることで実現できる。
制御プログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）及びＨＤＤ（Hard Disk Drive）が含まれる。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤ（Digital Versatile Disc）及びＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体にプログラムをコピーして実行してもよい。
【００８８】
以上、実施の形態に基づき、本発明の制御プログラム、情報処理装置及び制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【００８９】
１０  情報処理装置
１１  制御部
１１ａ  制御回路
１１ｂ  ＡＣＣ回路
１１ｃ  記憶部
１１ｄ，１１ｄ１，１１ｄ２  動作状態テーブル
１２  回路群
１３  クロック生成回路
１４  メモリ
【図１】
2020098545.tif 000003
【図２】
2020098545.tif 000004
【図３】
2020098545.tif 000005
【図４】
2020098545.tif 000006
【図５】
2020098545.tif 000007
【図６】
2020098545.tif 000008
【図７】
2020098545.tif 000009
【図８】
2020098545.tif 000010
【図９】
2020098545.tif 000011
【図１０】
2020098545.tif 000012
【図１１】
2020098545.tif 000013
【図１２】
2020098545.tif 000014
【図１３】
2020098545.tif 000015
【図１４】
2020098545.tif 000016
【図１５】
2020098545.tif 000017
【図１６】
2020098545.tif 000018