(57)【特許請求の範囲】
【請求項１】
クロック信号に従ってデータを保持するとともに出力する第１の保持部と、
前記出力されたデータを処理して処理データとして出力する処理部と、
前記処理データより少ないビット数の第１のエラー検出符号を前記処理データから生成する第１エラー検出符号生成部と、
前記第１のエラー検出符号より少ないビット数の第２のエラー検出符号を前記第１のエラー検出符号から生成する第２エラー検出符号生成部と、
前記クロック信号に従って前記処理データと前記第１および第２のエラー検出符号とを保持する第２の保持部と、
前記保持された第１のエラー検出符号を使用して前記保持された処理データのエラーを第１のエラーとして検出する第１エラー検出部と、
前記保持された第２のエラー検出符号を使用して前記保持された処理データのエラーを第２のエラーとして検出する第２エラー検出部と、
前記第１エラー検出部による前記第１のエラーの発生率が第１の閾値以下であり、かつ、前記第２エラー検出部による前記第２のエラーの発生率が第２の閾値より大きいときに、前記第２のエラーの発生率と前記処理部の電源電圧または前記クロック信号の周波数との間の所定の関係に基づいて、前記第２の閾値を前記第２のエラーの発生率の目標値として前記電源電圧または前記周波数を制御する制御量を出力する制御量出力部と
を具備する情報処理装置。
【請求項２】
前記制御量出力部は、
エラー検出単位期間内に検出された前記第１のエラーの数を計数する第１エラー計数部と、
前記エラー検出単位期間内に検出された前記第２のエラーの数を計数する第２エラー計数部と、
前記エラー検出単位期間において計数された前記第１エラーの数から得られた前記第１のエラーの発生率が前記第１の閾値以下であり、かつ、前記エラー検出単位期間において計数された前記第２エラーの数から得られた前記第２のエラーの発生率が前記第２の閾値より大きいときに前記所定の関係に基づいて前記制御量を生成する制御量生成部と
を備える請求項１記載の情報処理装置。
【請求項３】
前記制御量は、前記電源電圧の制御量であり、
前記制御量生成部は、
前記エラー検出単位期間において検出された前記第２のエラーの数の対数に、前記所定の関係から得られた前記制御量を対応付けて記憶する変換テーブルと、
前記エラー検出単位において計数された前記第２のエラーの数の対数を演算する対数演算部と、
前記エラー検出単位期間において計数された前記第１エラーの数から得られた前記第１のエラーの発生率が前記第１の閾値以下であり、かつ、前記エラー検出単位期間において計数された前記第２エラーの数から得られた前記第２のエラーの発生率が前記第２の閾値より大きいときに前記対数演算部により演算された前記対数に対応する前記制御量を前記変換テーブルから取得する電圧制御量取得部と
を備える請求項２記載の情報処理装置。
【請求項４】
前記対数演算部は、前記第２のエラーの数を２進表記したビット列において１のビットのうちの最上位の桁の値から1を減算した値を前記対数として出力する
請求項３記載の情報処理装置。
【請求項５】
前記制御量は、前記電源電圧の制御量であり、
前記制御量出力部は、前記第１のエラーの発生率が前記第１の閾値より大きければ、前記電源電圧を所定電圧昇圧するための前記制御量を出力する
請求項１記載の情報処理装置。
【請求項６】
前記制御量は、前記電源電圧の制御量であり、
前記制御量出力部は、所定の判断基準期間以上の間、前記第１のエラーの発生率が前記第１の閾値以下であり、かつ、前記第２のエラーの発生率が前記第２の閾値以下であれば、前記電源電圧を所定電圧降圧するための前記制御量を出力する
請求項１記載の情報処理装置。
【請求項７】
前記制御量は、前記電源電圧の制御量であり、
前記制御量生成部は、前記エラー検出単位期間ごとに前記制御量を生成し、それぞれの前記エラー検出単位期間において、前回に生成した前記制御量が０であったならば、前記所定の関係に基づいて今回の前記制御量を生成する
請求項２記載の情報処理装置。
【請求項８】
前記制御量生成部は、前記第２のエラーの発生率が第１の上限値以上である場合、または、前回に生成した前記制御量が０であった場合に前記所定の関係に基づいて今回の前記制御量を生成する
請求項７記載の情報処理装置。
【請求項９】
前記制御量生成部は、前記第２のエラー発生率が前記第１の上限値より大きい第２の上限値以上である場合に前記電源電圧を所定電圧昇圧するための前記制御量を生成する
請求項８記載の情報処理装置。
【請求項１０】
前記制御量は、前記周波数の制御量であり、
前記制御量に従って周波数を設定した前記クロック信号を生成するクロック生成回路をさらに具備する
請求項１記載の情報処理装置。
【請求項１１】
前記制御量出力部は、前記第１のエラーの発生率が前記第１の閾値より大きければ、前記周波数を所定周波数減少するための前記制御量を出力する
請求項１０記載の情報処理装置。
【請求項１２】
前記制御量出力部は、所定の判断基準期間以上の間、前記第１のエラーの発生率が前記第１の閾値以下であり、かつ、前記第２のエラーの発生率が前記第２の閾値以下であれば、前記周波数を所定周波数増加するための前記制御量を出力する
請求項１０記載の情報処理装置。
【請求項１３】
クロック信号に従ってデータを保持するとともに出力する第１の保持部と、前記出力されたデータを処理して処理データとして出力する処理部と、前記処理データより少ないビット数の第１のエラー検出符号を前記処理データから生成する第１エラー検出符号生成部と、前記第１のエラー検出符号より少ないビット数の第２のエラー検出符号を前記第１のエラー検出符号から生成する第２エラー検出符号生成部と、前記クロック信号に従って前記処理データと前記第１および第２のエラー検出符号とを保持する第２の保持部と、前記保持された第１のエラー検出符号を使用して前記保持された処理データのエラーを第１のエラーとして検出する第１エラー検出部と、前記保持された第２のエラー検出符号を使用して前記保持された処理データのエラーを第２のエラーとして検出する第２エラー検出部と、前記第１エラー検出部による前記第１のエラーの発生率が第１の閾値以下であり、かつ、前記第２エラー検出部による前記第２のエラーの発生率が第２の閾値より大きいときに、前記第２のエラーの発生率と前記処理部の電源電圧または前記クロック信号の周波数との間の所定の関係に基づいて、前記第２の閾値を前記第２のエラーの発生率の目標値として前記電源電圧または前記周波数を制御する制御量を出力する制御量出力部とを具備する情報処理装置と、
前記情報処理装置に前記電源電圧を供給するとともに前記出力された制御量に基づいて前記電源電圧を制御する電源装置と
を具備する情報処理システム。
【請求項１４】
処理部によって処理された処理データより少ないビット数の第１のエラー検出符号を前記処理データから生成する第１エラー検出符号生成手順と、
前記第１のエラー検出符号より少ないビット数の第２のエラー検出符号を前記第１のエラー検出符号から生成する第２エラー検出符号生成手順と、
クロック信号に従って前記処理データと前記第１および第２のエラー検出符号とを保持する保持部に保持された第１のエラー検出符号を使用して前記保持された処理データのエラーを第１のエラーとして検出する第１エラー検出手順と、
前記保持された第２のエラー検出符号を使用して前記保持された処理データのエラーを第２のエラーとして検出する第２エラー検出手順と、
前記第１エラー検出部による前記第１のエラーの発生率が第１の閾値以下であり、かつ、前記第２エラー検出部による前記第２のエラーの発生率が第２の閾値より大きいときに、前記第２のエラーの発生率と前記処理部の電源電圧または前記クロック信号の周波数との間の所定の関係に基づいて、前記第２の閾値を前記第２のエラーの発生率の目標値として前記電源電圧または前記周波数を制御する制御量を出力する制御量出力手順と
を具備する情報処理装置の制御方法。
【請求項１５】
処理部によって処理された処理データより少ないビット数の第１のエラー検出符号を前記処理データから生成する第１エラー検出符号生成手順と、
前記第１のエラー検出符号より少ないビット数の第２のエラー検出符号を前記第１のエラー検出符号から生成する第２エラー検出符号生成手順と、
クロック信号に従って前記処理データと前記第１および第２のエラー検出符号とを保持する保持部に保持された第１のエラー検出符号を使用して前記保持された処理データのエラーを第１のエラーとして検出する第１エラー検出手順と、
前記保持された第２のエラー検出符号を使用して前記保持された処理データのエラーを第２のエラーとして検出する第２エラー検出手順と、
前記第１エラー検出部による前記第１のエラーの発生率が第１の閾値以下であり、かつ、前記第２エラー検出部による前記第２のエラーの発生率が第２の閾値より大きいときに、前記第２のエラーの発生率と前記処理部の電源電圧または前記クロック信号の周波数との間の所定の関係に基づいて、前記第２の閾値を前記第２のエラーの発生率の目標値として前記電源電圧または前記周波数を制御する制御量を出力する制御量出力手順と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理装置の制御方法、および、プログラムに関し、特に、電源電圧または周波数を制御する情報処理装置、情報処理システム、情報処理装置の制御方法、および、プログラムに関する。
【背景技術】
【０００２】
近年、マイクロプロセッサ等に使用される論理回路では、消費電力に対する演算処理効率の向上が要求されることが多い。論理回路のレイアウトを変えないで、動的な制御により演算処理効率を向上させる方法としては、動作周波数を一定にして電源電圧を低下させる方法や、電源電圧を一定にして周波数を増加させる方法などがある。しかし、電源電圧を低下させた場合、または、周波数を増加させた場合、論理回路が誤動作する確率が増加してしまうことが知られている。
【０００３】
ここで、論理回路において誤動作の原因となるエラーは、タイミング違反性エラーと、それ以外のエラーとに分けることができる。タイミング違反性エラーとは、回路の応答タイミングが設定時の想定範囲からずれてしまうことにより生じるエラーである。
【０００４】
タイミング違反性エラー以外のエラーとしては、Ｆ／Ｆリテンション性エラーなどがある。Ｆ／Ｆリテンション性エラーとは、フリップフロップが同一値を保持する期間が、設計値より短くなったために生じるエラーである。
【０００５】
これらの発生頻度と電源電圧または周波数との間の関係は、論理回路ごとに様々であるため、エラーの発生率が許容値以下となる電源電圧や周波数を正確に予測することが困難であった。
【０００６】
これらのエラーの発生率が許容値以下となる電源電圧または周波数を予測するには、論路回路において、電源電圧または周波数ごとにエラーの発生率を調べる必要がある。エラーを検出する方法として、ＥＤＳ（Error Detection Sequentials）とＴＲＣ（Tunable Replica Circuit）とを使用する方法が提案されている（例えば、非特許文献１参照。）。ＥＤＳとは、タイミング違反性エラーを検出することができる特殊なフリップフロップである。ＴＲＣとは、インバータを連ねることにより、論理回路においてクリティカル・パスの遅延を模倣して、その分だけ遅延したデータ信号を出力する回路である。ＴＲＣから出力されたデータ信号をＥＤＳに入力し、そのＥＤＳによるタイミング違反性エラーの検出結果を参照すれば、クリティカル・パスにおけるタイミング違反性エラーの発生の有無を予測することができる。
【０００７】
また、エラーを検出するために、ＴＤ（Timing-Detector）回路を使用する方法も提案されている（例えば、非特許文献２参照。）。ＴＤ回路は、データ信号の立上り、および、立下りを検出してパルス信号を生成し、それらのパルス信号の生成タイミングとクロック信号の遷移タイミングとを比較してエラーを検出する回路である。ＴＤ回路により、論理回路におけるタイミング違反性エラーが検出される。
【０００８】
ＥＤＳおよびＴＲＣや、ＴＤ回路を使用して、電源電圧または周波数が異なる動作条件ごとにエラーを検出することにより、エラーの発生頻度が許容値以下となる電源電圧または周波数の値が求められる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】James Tschanz, et al., A 45nm Resilient and Adaptive Microprocessor Core for Dynamic Variation Tolerance, ISSCC 2010.
【非特許文献２】David Bull, et al., A Power-Efficient 32b ARM ISA Processor Using Timing-Error Detection and Correction for Transient-Error Tolerance and Adaptation to PVT Variation, ISSCC 2010.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述の従来技術では、誤動作が生じない電源電圧または周波数の正確な値を情報処理装置に設定することが困難であった。
【００１１】
ＥＤＳおよびＴＲＣやＴＤ回路を使用する方法では、タイミング違反性エラーを検出できるが、それ以外のエラー、例えば、Ｆ／Ｆリテンション性エラーを検出することができない。このため、タイミング違反性エラー以外のエラーの発生頻度が高い回路について、誤動作が生じない電源電圧または動作周波数の正確な値を得ることが困難になる。また、ＥＤＳやＴＤ回路は、それぞれフリップフロップを備えている。このため、ＥＤＳやＴＤ回路を備えることにより、フリップフロップにおいて生じうる、Ｆ／Ｆリテンション性エラーなどのエラーが、かえって増加してしまうことがある。さらに、ＥＤＳおよびＴＲＣでは、クリティカル・パスになると予測したパスのみを観測しているが、予測したパス以外のパスの遅延がクリティカルになる可能性もある。その場合、エラー検出結果から得られた電源電圧または動作周波数の値が不正確になってしまう。正確な値を得るために全てのパスを観測対象とすると、膨大な回路規模のＥＤＳおよびＴＲＣを要し、多大な手間やコストが生じてしまう。同様に、ＴＤ回路においても、観測対象の回路の規模が増大するほど、必要なＴＤ回路の数が増加し、電源電圧または動作周波数の正確な値を得るのに多大な手間やコストが生じてしまう。
【００１２】
ＥＤＳおよびＴＲＣやＴＤ回路を用いなくとも、パリティ検査などを行うことにより簡易にエラーを検出することができる。しかし、パリティ検査等を行う回路では、パリティビットの生成が間に合わないほど大きな遅延が生じた場合に、その遅延によるタイミング違反性エラーを検出することができないことがあった。
【００１３】
したがって、ＥＤＳおよびＴＲＣやＴＤ回路を使用する方法や、パリティ検査等を行う方法では、誤動作が生じない電源電圧または周波数の正確な値を得ることが困難であった。
【００１４】
本発明はこのような状況に鑑みてなされたものであり、誤動作が生じない電源電圧または周波数の正確な値を情報処理装置に設定することを容易にすることを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、クロック信号に従ってデータを保持するとともに出力する第１の保持部と、上記出力されたデータを処理して処理データとして出力する処理部と、上記処理データから上記処理データのエラーを検出するための第１のエラー検出符号を生成する第１エラー検出符号生成部と、上記第１のエラー検出符号から上記処理データのエラーを検出するための第２のエラー検出符号を生成する第２エラー検出符号生成部と、上記クロック信号に従って上記処理データと上記第１および第２のエラー検出符号とを保持する第２の保持部と、上記保持された第１のエラー検出符号を使用して上記保持された処理データのエラーを第１のエラーとして検出する第１エラー検出部と、上記保持された第２のエラー検出符号を使用して上記保持された処理データのエラーを第２のエラーとして検出する第２エラー検出部と、上記第１エラー検出部による上記第１のエラーの発生率が第１の閾値以下であり、かつ、上記第２エラー検出部による上記第２のエラーの発生率が第２の閾値より大きいときに、上記第２のエラーの発生率と上記処理部の電源電圧または上記クロック信号の周波数との間の所定の関係に基づいて、上記第２の閾値を上記第２のエラーの発生率の目標値として上記電源電圧または上記周波数を制御する制御量を出力する制御量出力部とを具備する情報処理装置、その制御方法、および、プログラムである。これにより、第１エラーの発生率が第１の閾値以下であるときに、第２エラーの発生率を第２の閾値以下の目標値として電源電圧または周波数を制御する制御量が出力されるという作用をもたらす。
【００１６】
また、この第１の側面において、上記制御量出力部は、エラー検出単位期間内に検出された上記第１のエラーの数を計数する第１エラー計数部と、上記エラー検出単位期間内に検出された上記第２のエラーの数を計数する第２エラー計数部と、上記エラー検出単位期間において計数された上記第１エラーの数から得られた上記第１のエラーの発生率が第１の閾値以下であり、かつ、上記エラー検出単位期間において計数された上記第２エラーの数から得られた上記第２のエラーの発生率が第２の閾値より大きいときに上記所定の関係に基づいて上記制御量を生成する制御量生成部とを備えてもよい。これにより、エラー検出単位期間において計数された第１エラーの数から得られた第１エラーの発生率が第１の閾値以下であるときに第２エラーの発生率を第２の閾値以下の目標値として電源電圧または周波数を制御する制御量が出力されるという作用をもたらす。
【００１７】
また、この第１の側面において、上記制御量生成部は、上記エラー検出単位期間において検出された上記第２のエラーの数の対数に、上記所定の関係から得られた上記制御量を対応付けて記憶する変換テーブルと、上記エラー検出単位において計数された上記第２のエラーの数の対数を演算する対数演算部と、上記エラー検出単位期間において計数された上記第１エラーの数から得られた上記第１のエラーの発生率が第１の閾値以下であり、かつ、上記エラー検出単位期間において計数された上記第２エラーの数から得られた上記第２のエラーの発生率が第２の閾値より大きいときに上記対数演算部により演算された上記対数に対応する上記制御量を上記変換テーブルから取得する電圧制御量取得部とを備えてもよい。これにより、第２エラー数に対応する制御量が変換テーブルから取得されるという作用をもたらす。
【００１８】
また、この第１の側面において、上記対数演算部は、上記第２のエラーの数を２進表記したビット列において１のビットのうちの最上位の桁の値から１を減算した値を上記対数として出力してもよい。これにより、第２のエラーの数を２進表記したビット列において１のビットのうちの最上位の桁の値から１を減算した値が上記対数として出力されるという作用をもたらす。
【００１９】
また、この第１の側面において、上記制御量は、上記電源電圧の制御量であり、上記制御量出力部は、上記第１のエラーの発生率が上記第１の閾値より大きければ、上記電源電圧を所定電圧昇圧するための上記制御量を出力してもよい。これにより、第１のエラーの発生率が第１の閾値より大きければ、電源電圧が所定電圧昇圧されるという作用をもたらす。
【００２０】
また、この第１の側面において、上記制御量は、上記電源電圧の制御量であり、上記制御量出力部は、所定の判断基準期間以上の間、上記第１のエラーの発生率が上記第１の閾値以下であり、かつ、上記第２のエラーの発生率が上記第２の閾値以下であれば、上記電源電圧を所定電圧降圧するための上記制御量を出力してもよい。これにより、所定の判断基準期間以上の間、第１および第２のエラーの発生率がそれぞれの閾値以下であれば、電源電圧を所定電圧降圧するための制御量が出力されるという作用をもたらす。
【００２１】
また、この第１の側面において、上記制御量は、上記電源電圧の制御量であり、上記制御量生成部は、上記エラー検出単位期間ごとに上記制御量を生成し、それぞれの上記エラー検出単位期間において、前回に生成した上記制御量が０であったならば、上記所定の関係に基づいて今回の上記制御量を生成してもよい。これにより、前回に生成した制御量が０であったならば、所定の関係に基づいて今回の制御量が生成されるという作用をもたらす。
【００２２】
また、この第１の側面において、上記制御量生成部は、上記第２のエラーの発生率が第１の上限値以上である場合、または、前回に生成した上記制御量が０であった場合に上記所定の関係に基づいて今回の上記制御量を生成してもよい。これにより、第２のエラーの発生率が第１の上限値以上である場合、または、前回に生成した制御量が０であった場合に所定の関係に基づいて今回の上記制御量が生成されるという作用をもたらす。
【００２３】
また、この第１の側面において、上記制御量生成部は、上記第２のエラー発生率が上記第１の上限値より大きい第２の上限値以上である場合に上記電源電圧を所定電圧昇圧するための上記制御量を生成してもよい。これにより、第２のエラー発生率が第２の上限値以上である場合に電源電圧を所定電圧昇圧するための制御量が生成されるという作用をもたらす。
【００２４】
また、この第１の側面において、上記制御量は、上記周波数の制御量であり、上記制御量に従って周波数を設定した上記クロック信号を生成するクロック生成回路をさらに具備してもよい。これにより、制御量に従って周波数が設定されたクロック信号が生成されるという作用をもたらす。
【００２５】
また、この第１の側面において、上記制御量出力部は、上記第１のエラーの発生率が上記第１の閾値より大きければ、上記周波数を所定周波数減少するための上記制御量を出力してもよい。これにより、第１のエラーの発生率が第１の閾値より大きければ、周波数を所定周波数減少するための制御量が出力されるという作用をもたらす。
【００２６】
また、この第１の側面において、上記制御量出力部は、所定の判断基準期間以上の間、上記第１のエラーの発生率が上記第１の閾値以下であり、かつ、上記第２のエラーの発生率が上記第２の閾値以下であれば、上記周波数を所定周波数増加するための上記制御量を出力してもよい。これにより、所定の判断基準期間以上の間、第１および第２のエラーの発生率がそれぞれの閾値以下であれば、周波数を所定周波数増加するための制御量が出力されるという作用をもたらす。
【００２７】
また、本発明の第２の側面は、クロック信号に従ってデータを保持するとともに出力する第１の保持部と、上記出力されたデータを処理して処理データとして出力する処理部と、上記処理データから上記処理データのエラーを検出するための第１のエラー検出符号を生成する第１エラー検出符号生成部と、上記第１のエラー検出符号から上記処理データのエラーを検出するための第２のエラー検出符号を生成する第２エラー検出符号生成部と、上記クロック信号に従って上記処理データと上記第１および第２のエラー検出符号とを保持する第２の保持部と、上記保持された第１のエラー検出符号を使用して上記保持された処理データのエラーを第１のエラーとして検出する第１エラー検出部と、上記保持された第２のエラー検出符号を使用して上記保持された処理データのエラーを第２のエラーとして検出する第２エラー検出部と、上記第１エラー検出部による上記第１のエラーの発生率が第１の閾値以下であり、かつ、上記第２エラー検出部による上記第２のエラーの発生率が第２の閾値より大きいときに、上記第２のエラーの発生率と上記処理部の電源電圧または上記クロック信号の周波数との間の所定の関係に基づいて、上記第２の閾値を上記第２のエラーの発生率の目標値として上記電源電圧または上記周波数を制御する制御量を出力する制御量出力部とを具備する情報処理装置と、上記情報処理装置に上記電源電圧を供給するとともに上記出力された制御量に基づいて上記電源電圧を制御する電源装置とを具備する情報処理システムである。これにより、第１エラーの発生率が第１の閾値以下であるときに、第２エラーの発生率を第２の閾値以下の目標値として電源電圧または周波数を制御する制御量が出力されるという作用をもたらす。
【発明の効果】
【００２８】
本発明によれば、誤動作が生じない電源電圧または周波数の正確な値を情報処理装置に設定することを容易にするという優れた効果を奏し得る。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１の実施の形態における情報処理システムの一構成例を示すブロック図である。
【図２】本発明の第１の実施の形態における第１パリティ生成部および第２パリティ生成部の一構成例を示す回路図である。
【図３】本発明の第１の実施の形態における第１パリティ検査部および第２パリティ検査部の一構成例を示す回路図である。
【図４】本発明の第１の実施の形態における制御量出力部の一構成例を示すブロック図である。
【図５】本発明の第１の実施の形態におけるタイムスライス制御部の動作結果の一例を示す真理値表である。
【図６】本発明の第１の実施の形態における対数演算部の演算結果の一例を示す表である。
【図７】本発明の第１の実施の形態における第２エラー発生率と電源電圧との間の関係の一例を示すグラフである。
【図８】本発明の第１の実施の形態における第２エラー発生率の対数と電源電圧との間の関係の一例を示すグラフである。
【図９】本発明の第１の実施の形態における対数演算部の出力値と電圧制御量との間の関係の一例を示すグラフである。
【図１０】本発明の第１の実施の形態における電圧制御量変換テーブルの一例である。
【図１１】本発明の第１の実施の形態における電源装置の一構成例を示すブロック図である。
【図１２】本発明の第１の実施の形態における電圧制御量取得部の動作の一例を示すフローチャートである。
【図１３】本発明の第１の実施の形態における電圧制御量取得処理の一例を示すフローチャートである。
【図１４】本発明の第１の実施の形態におけるエラー未検出状態継続判断処理の一例を示すフローチャートである。
【図１５】本発明の第１の実施の形態における情報処理装置の動作の一例を示すタイミングチャートである。
【図１６】本発明の第１の実施の形態における電源装置の動作の一例を示すタイミングチャートである。
【図１７】本発明の第１の実施の形態における情報処理システムの動作の一例を示すタイミンチャートである。
【図１８】本発明の第１の実施の形態における安定状態の情報処理システムの動作の一例を示すタイミングチャートである。
【図１９】本発明の第１の実施の形態における制御量演算部の動作の一例を示すタイミングチャートである。
【図２０】本発明の第１の実施の形態における安定状態の制御量演算部の動作の一例を示すタイミングチャートである。
【図２１】情報処理装置の誤動作の原因をまとめた表である。
【図２２】本発明の第１の実施形態の情報処理装置と従来技術を用いた装置とを比較した表である。
【図２３】本発明の第１の実施の形態の変形例における情報処理システムの動作の一例を示すタイミングチャートである。
【図２４】本発明の第１の実施の形態の変形例における情報処理システムの一構成例を示すブロック図である。
【図２５】本発明の第１の実施の形態の変形例におけるパリティ生成部の一構成例を示すブロック図である。
【図２６】本発明の第２の実施の形態における制御量出力部の一構成例を示すブロック図である。
【図２７】本発明の第２の実施の形態における電圧制御量取得処理の一例を示すフローチャートである。
【図２８】本発明の第２の実施の形態における制御量演算部の動作の一例を示すタイミングチャートである。
【図２９】本発明の第３の実施の形態における制御量出力部の一構成例を示すブロック図である。
【図３０】本発明の第３の実施の形態における電圧制御量取得処理の一例を示すフローチャートである。
【図３１】本発明の第３の実施の形態における制御量演算部の動作の一例を示すタイミングチャートである。
【図３２】本発明の第４の実施の形態における情報処理システムの一構成例を示すブロック図である。
【図３３】本発明の第４の実施の形態における制御量出力部の一構成例を示すブロック図である。
【図３４】本発明の第４の実施の形態における周波数制御量取得処理の一例を示すフローチャートである。
【図３５】本発明の第４の実施の形態における遷移頻度と周期内遷移時刻との間の関係を示すグラフである。
【発明を実施するための形態】
【００３０】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（電源電圧の制御：第２エラー数の対数を演算する例）
２．第２の実施の形態（電源電圧の制御：第２エラー数の増加を防止する例）
３．第３の実施の形態（電源電圧の制御：第１エラー数の発生を防止する例）
４．第４の実施の形態（周波数の制御）
【００３１】
＜１．第１の実施の形態＞
［情報処理システムの構成例］
図１は、本発明の実施の形態における情報処理システムの一構成例を示すブロック図である。この情報処理システムは、情報処理装置１００および電源装置７００を備える。情報処理装置１００は、クロック生成回路１１０と、パイプラインレジスタ２１０および２２０と、演算器３１０と、パリティ生成部４１０と、パリティ検査部４５０と、制御量出力部５００とを備える。
【００３２】
クロック生成回路１１０は、所定の周波数のクロック信号ＣＬＫを生成するものである。クロック生成回路１１０は、生成したクロック信号ＣＬＫをパイプラインレジスタ２１０および２２０と制御量出力部５００とに供給する。
【００３３】
パイプラインレジスタ２１０は、クロック信号ＣＬＫに従ってパイプライン処理における所定のステージの処理結果を保持するとともに出力するものである。パイプラインレジスタ２１０が保持する処理結果は、例えば、１６ビットのデータを含む。パイプラインレジスタ２１０は、クロック信号ＣＬＫにしたがって所定のステージの処理結果を保持するとともに演算器３１０へ出力する。
【００３４】
演算器３１０は、パイプラインレジスタ２１０が出力したデータに対して所定の演算を実行するものである。演算器３１０は、演算結果をパリティ生成部４１０およびパイプラインレジスタ２２０に信号線９０１を介して出力する。この演算結果には、１６ビットのデータが含まれる。
【００３５】
パリティ生成部４１０は、第１パリティ生成部４２０および第２パリティ生成部４３０を備える。
【００３６】
第１パリティ生成部４２０は、演算器３１０が出力したデータからパリティビットを生成するものである。例えば、第１パリティ生成部４２０は、１６ビットのデータを構成する４つの４ビットのビット列のそれぞれに対してＸＯＲ（排他的論理和）演算を実行することにより、４ビットのパリティビットを生成する。以下、データから生成された各パリティビットを第１パリティビットと称する。第１パリティ生成部４２０は、生成した各第１パリティビットを第２パリティ生成部４３０およびパイプラインレジスタ２２０に信号線９０２を介して出力する。
【００３７】
第２パリティ生成部４３０は、第１パリティ生成部４２０が出力した第１パリティビットからパリティビットを生成するものである。例えば、第２パリティ生成部４３０は、４つの第１パリティビットに対してＸＯＲ演算を実行することにより、１ビットのパリティビットを生成する。以下、第１パリティビットから生成されたパリティビットを第２パリティビットと称する。第２パリティ生成部４３０は、生成した第２パリティビットをパイプラインレジスタ２２０に信号線９０３を介して出力する。
【００３８】
パイプラインレジスタ２２０は、クロック信号ＣＬＫに従ってパイプライン処理における所定のステージの処理結果を保持するとともに出力するものである。具体的には、パイプラインレジスタ２２０は、クロック信号ＣＬＫにしたがって、演算器３１０から出力されたデータとパリティ生成部４１０から出力された第１パリティビットおよび第２パリティビットとを保持するとともに後段のステージへ出力する。ここで、パイプラインレジスタ２２０に保持された、演算結果のデータは、信号線９０４を介して第１パリティ検査部と後段のステージとに出力される。また、パイプラインレジスタ２２０に保持された第１パリティビットおよび第２パリティビットは、信号線９０５および９０６を介してパリティ検査部４５０に出力される。
【００３９】
パリティ検査部４５０は、第１パリティ検査部４６０および第２パリティ検査部４７０を備える。
【００４０】
第１パリティ検査部４６０は、パイプラインレジスタ２２０に保持された第１パリティビットを使用してパイプラインレジスタ２２０に保持された演算結果のデータにおけるエラーを検出するものである。例えば、第１パリティ検査部４６０は、１６ビットのデータを構成する４つの４ビットのビット列それぞれに対してＸＯＲ演算を実行することにより、４ビットのパリティビットを生成する。そして、第１パリティ検査部４６０は、生成した４つのパリティビットを第２パリティ検査部４７０に信号線９０７を介して出力する。また、第１パリティ検査部４６０は、生成した各パリティビットとパイプラインレジスタ２２０に保持された各第１パリティビットとを比較し、各比較結果のＯＲ（論理和）演算の結果を示す１ビットの情報を第１エラー検出情報として生成する。いずれかの比較結果が不一致であれば、エラーが検出される。以下、第１パリティビットにより検出されたエラーを第１エラーと称する。第１パリティ検査部４６０は、第１エラー検出情報を制御量出力部５００に信号線９０８を介して出力する。
【００４１】
第２パリティ検査部４７０は、パイプラインレジスタ２２０に保持された第２パリティビットを使用してパイプラインレジスタ２２０に保持された演算結果のデータにおけるエラーを検出するものである。具体的には、第２パリティ検査部４７０は、第１パリティ検査部４６０が出力した４ビットのパリティビットに対してＸＯＲ演算を実行することにより、１ビットのパリティビットを生成する。第２パリティ検査部４７０は、生成したパリティビットと第２パリティビットとを比較し、比較結果を示す１ビットの情報を第２エラー検出情報として生成する。比較結果が不一致であれば、エラーが検出される。以下、第２パリティビットにより検出されたエラーを第２エラーと称する。第２パリティ検査部４７０は、第２エラー検出情報を制御量出力部５００に信号線９０９を介して出力する。
【００４２】
制御量出力部５００は、第１エラー検出情報および第２エラー検出情報に基づいて、情報処理装置１００に供給される電源電圧ＶDDを制御するための電圧制御量ΔＶを出力するものである。具体的には、制御量出力部５００は、第１エラー検出情報および第２エラー検出情報から第１エラーおよび第２エラーの発生率を取得する。制御量出力部５００は、第１エラーの発生率が第１の閾値より大きければ、電源電圧ＶDDを緊急昇圧するなどのシステムエラーを回避するための処理を実行する。ここで、第１の閾値は、第１エラーの発生率の許容値である。第１の閾値には、０以上の実数（例えば、０）が設定される。
【００４３】
第１エラーの発生率が第１の閾値以下であれば、制御量出力部５００は、第２の閾値を第２エラーの発生率の目標値として、電源電圧ＶDDを制御する電圧制御量ΔＶを演算する。ここで、第２の閾値は、第２エラーの発生率の許容値である。第２の閾値には、０以上の実数（例えば、１／１２９）が設定される。第２エラーの発生率が第２の閾値より大きければ、０以外の電圧制御量ΔＶが演算され、第２エラーの発生率が第２の閾値以下であれば、電圧制御量ΔＶは０になる。電圧制御量ΔＶの演算方法の詳細については、後述する。制御量出力部５００は、演算した電圧制御量ΔＶを電源装置７００に信号線９１２を介して出力する。電圧制御量ΔＶを出力した後、制御量出力部５００は、所定のタイミングで電圧制御フラグを電源装置７００に信号線９１１を介して出力する。電圧制御フラグは、出力した電圧制御量ΔＶの電源電圧ＶDDへの加算を電源装置７００に指示する信号である。
【００４４】
電源装置７００は、情報処理装置１００に電源を供給するものである。電源装置７００は、ケーブル９１０を介して電源を情報処理装置１００に供給する。そして、電源装置７００は、電圧制御フラグを受け取った場合に、電圧制御量ΔＶを電源電圧ＶDDに加算した値で電源電圧を更新する。
【００４５】
なお、パイプラインレジスタ２１０および２２０は、特許請求の範囲に記載の第１および第２の保持部の一例である。第１パリティ生成部４２０は、特許請求の範囲に記載の第１エラー検出部号生成部の一例である。第２パリティ生成部４３０は、特許請求の範囲に記載の第２エラー検出部号生成部の一例である。第１パリティ検査部４６０は、特許請求の範囲に記載の第１エラー検出部の一例である。第２パリティ検査部４７０は、特許請求の範囲に記載の第２エラー検出部の一例である。
【００４６】
図２は、本発明の第１の実施の形態における第１パリティ生成部４２０および第２パリティ生成部４３０の一構成例を示す回路図である。第１パリティ生成部４２０は、ＸＯＲゲート４２１乃至４２４を備える。第２パリティ生成部４３０は、ＸＯＲゲート４３１を備える。
【００４７】
ＸＯＲゲート４２１乃至４２４および４３１は、入力値の排他的論理和を出力するものである。演算器３１０から出力される１６ビットのデータは、それぞれが４ビットのビット列を含む４つのグループに分けられる。ＸＯＲゲート４２１乃至４２４には、それぞれ異なるグループに属するビット列が入力される。ＸＯＲゲート４２１乃至４２４は、入力されたビット列の排他的論理和を第１パリティビットとしてＸＯＲゲート４３１およびパイプラインレジスタ２２０へ出力する。ＸＯＲゲート４３１は、ＸＯＲゲート４２１乃至４２４からの４つの第１パリティビットの排他的論理和を第２パリティビットとしてパイプラインレジスタ２２０へ出力する。
【００４８】
図３は、本発明の第１の実施の形態における第１パリティ検査部４６０および第２パリティ検査部４７０の一構成例を示す回路図である。第１パリティ検査部４６０は、ＸＯＲゲート４６１乃至４６８およびＯＲゲート４６９を備える。第２パリティ検査部４７０は、ＸＯＲゲート４７１および４７２を備える。
【００４９】
ＸＯＲゲート４６１乃至４６８とＸＯＲゲート４７１および４７２とは、入力値の排他的論理和を出力するものである。ＸＯＲゲート４６１乃至４６４には、それぞれ異なるグループに属するビット列が入力される。ＸＯＲゲート４６１乃至４６４は、入力値の排他的論理和を、それぞれ、ＸＯＲゲート４６５乃至４６８へ出力する。これらの排他的論理和は、それぞれ、対応するグループに属する４ビットのうちの１のビットが偶数個である場合に０となるｅｖｅｎパリティビットである。また、ＸＯＲゲート４６１乃至４６４は、それらのパリティビットをＸＯＲゲート４７１へも出力する。ＸＯＲゲート４６５乃至４６８には、それぞれ、ＸＯＲゲート４６１乃至４６４からの互いに異なるパリティビットと第１パリティビットとが１つずつ入力される。ＸＯＲゲート４６５乃至４６８は、これらの入力値の排他的論理和をＯＲゲート４６９へ出力する。これらの排他的論理和は、それぞれ、対応するグループに属するビット列にパリティエラー（すなわち、第１エラー）が検出された場合に１となり、検出されない場合に０となる１ビットのエラー検出情報である。ＸＯＲゲート４７１は、ＸＯＲゲート４６５乃至４６８からの入力値の排他的論理和をＸＯＲゲート４７２へ出力する。この排他的論理和は、１６ビットのデータのうちの１のビットが偶数個である場合に０となるｅｖｅｎパリティビットである。ＸＯＲゲート４７２には、ＸＯＲゲート４７１からのパリティビットと第２パリティビットとが入力される。ＸＯＲゲート４７２は、これらの入力値の排他的論理和を第２エラー検出情報として制御量出力部５００へ出力する。
【００５０】
ＯＲゲート４６９は、入力値の論理和を出力するものである。ＯＲゲート４６９は、ＸＯＲゲート４６５乃至４６８からのエラー検出情報の論理和を第１エラー検出情報として制御量出力部５００へ出力する。
【００５１】
図４は、本発明の第１の実施の形態における制御量出力部５００の一構成例を示すブロック図である。制御量出力部５００は、エラー計数部５１０、タイムスライス制御部５２０、および、制御量演算部５３０を備える。エラー計数部５１０は、第１エラーカウンタ５１１および第２エラーカウンタ５１２を備える。タイムスライス制御部５２０は、ダウンカウンタ５２１、スライス開始フラグ生成部５２２、および、電圧制御フラグ生成部５２３を備える。制御量演算部５３０は、電圧制御量変換テーブル５３１、対数演算部５３２、電圧制御量取得部５３３、および、エラー未検出状態継続カウンタ５３４を備える。
【００５２】
第１エラーカウンタ５１１は、第１エラー検出情報に基づいて、エラー検出のための所定の単位期間内に検出された第１エラーの数を計数するものである。この単位期間を以下、「タイムスライス」と称する。タイムスライスの長さには、クロックサイクルより長い期間が設定される。例えば、タイムスライスの長さには、１２９クロックサイクルが設定される。第１エラーカウンタ５１１は、各クロックサイクルにおいて、第１エラーが検出されたことを第１エラー検出情報が示していれば、カウンタ値を１つ増分する。第１エラーカウンタ５１１は、そのカウンタ値を第１エラー数として電圧制御量取得部５３３に信号線９２１を介して出力する。そして、第１エラーカウンタ５１１のカウンタ値は、タイムスライス内の所定のタイミングで、スライス開始フラグ生成部５２２により０に初期化される。
【００５３】
第２エラーカウンタ５１２は、第２エラー検出情報に基づいてタイムスライス内に検出された第２エラーの数を計数するものである。具体的には、第２エラーカウンタ５１２は、クロック信号ＣＬＫの示す各クロックサイクルにおいて、第２エラーが検出されたことを第２エラー検出情報が示していれば、カウンタ値を１つ増分する。第２エラーカウンタ５１２は、そのカウンタ値を第２エラー数として対数演算部５３２および電圧制御量取得部５３３に信号線９２２を介して出力する。そして、第２エラーカウンタ５１２のカウンタ値は、タイムスライス内の所定のタイミングで、スライス開始フラグ生成部５２２により０に初期化される。
【００５４】
ダウンカウンタ５２１は、タイムスライス内の経過時間を計数するものである。具体的には、ダウンカウンタ５２１は、クロックサイクルが経過するたびに、カウンタ値を１つ減分する。カウンタ値が０となった次のクロックサイクルにおいて、ダウンカウンタ５２１は、カウンタ値を初期値（例えば、１２８）にリセットする。
【００５５】
スライス開始フラグ生成部５２２は、ダウンカウンタ５２１のカウンタ値に基づいてスライス開始フラグおよびリセット信号を生成するものである。スライス開始フラグは、タイムスライス内の所定のタイミングにおいて制御量演算部５３０に電圧制御量ΔＶの演算の開始を指示する信号である。リセット信号は、第１エラーカウンタ５１１および第２エラーカウンタ５１２に初期化を指示する信号である。スライス開始フラグ生成部５２２は、例えば、ダウンカウンタ５２１の値が１２６であるときに、スライス開始フラグを生成して制御量演算部５３０へ信号線９２３を介して出力する。そして、スライス開始フラグを出力してから、所定のクロックサイクル数（例えば、４クロックサイクル）が経過したとき、スライス開始フラグ生成部５２２は、信号線９２４を介してリセット信号を出力する。ここで、リセット信号は、スライス開始フラグが出力されてから、電源制御量ΔＶの演算が終了するのに十分な時間が経過したタイミングにおいて出力される。
【００５６】
電圧制御フラグ生成部５２３は、ダウンカウンタ５２１のカウンタ値に基づいて電圧制御フラグを生成するものである。具体的には、電圧制御フラグ生成部５２３は、タイムスライス内の所定の期間（例えば、ダウンカウンタ５２１のカウンタ値が１１９乃至６４の期間）において、電圧制御フラグを生成して電源装置７００へ出力する。ここで、電圧制御フラグは、スライス開始フラグが出力されてから、電源制御量ΔＶの演算が終了するのに十分な時間が経過したタイミングにおいて出力される。また、電圧制御フラグの出力期間には、電源装置７００が電圧制御フラグを受け取るのに十分な時間が設定される。電源装置７００が遠方にあって、電圧制御フラグの信号遷移の伝達に時間がかかる場合、電圧制御フラグの出力期間には比較的長い時間が設定される。
【００５７】
電圧制御量変換テーブル５３１は、第２エラー数の対数と電圧制御量ΔＶとを対応付けて記憶するものである。第２エラー数は、電源電圧ＶDDが低下するほど、指数関数的に増加することが多い。第２エラー数と電源電圧ＶDDとの間に指数関係がある場合、その指数関係は、第２エラー数の対数と電源電圧ＶDDとの間の比例関係に近似することができる。また、エラー発生率が第２の閾値（例えば、１／１２９）になるときの電源電圧は、最低動作電圧Ｖminとして予め定義される。上述の比例関係に基づいて、電圧制御量変換テーブル５３１には、第２エラー数の対数ごとに、それらの対数に対応する各電源電圧ＶDDを最低動作電圧Ｖminに制御するための電圧制御量ΔＶが格納される。
【００５８】
対数演算部５３２は、第２エラー数の対数を演算するものである。対数の底の値は、例えば２に設定される。対数演算部５３２は、演算結果を電圧制御量取得部５３３へ出力する。
【００５９】
電圧制御量取得部５３３は、第１エラー数および第２エラー数に基づいて、電圧制御量ΔＶを取得するものである。詳細には、電圧制御量取得部５３３は、第１エラーの発生率が第１の閾値より大きければ、電源電圧ＶDDを緊急昇圧するなど、システムエラーを回避するための処理を実行する。第１エラーの発生率が第１の閾値以下であれば、電圧制御量取得部５３３は、第１エラーの発生率が第１閾値であり、かつ、第２エラーの発生率が第２の閾値以下である状態が一定期間、継続しているか否かを判断する。具体的には、電圧制御量取得部５３３は、第１エラーおよび第２エラーの発生率が各閾値以下の状態（以下、「エラー未検出の状態」と称する）が継続したタイムスライスの数をエラー未検出状態継続カウンタ５３４に計数させておく。電圧制御量取得部５３３は、そのカウンタ値を参照することにより、エラー未検出の状態が一定期間継続したかを、判断する。
【００６０】
エラー未検出の状態が一定期間、継続していない場合、電圧制御量取得部５３３は、第２エラー数の対数に対応する電圧制御量ΔＶを電圧制御量変換テーブル５３１から取得して電源装置７００へ出力する。ただし、前回のタイムスライスにおいて、０以外の電圧制御量ΔＶを出力していたのであれば、電圧制御量取得部５３３は、第２エラー数の対数の値にかかわらず、今回のタイムスライスにおいて出力する電圧制御量ΔＶを０にする。これは、電圧制御量ΔＶを正確に算出するためである。電源電圧ＶDDは、一般に電圧制御量ΔＶが出力されても、直ちに変動するものではなく、電圧制御量ΔＶに現在値を加算した値に電源電圧ＶDDが更新されるまでに、ある程度の時間がかかる。電源電圧ＶDDの更新中に検出された第２エラーの数は、更新後の電源電圧ＶDDにおいて検出された第２エラーの数とは言い難い。このため、電源電圧ＶDDの更新中に検出された第２エラーの数に基づいて制御量演算部５３０が電圧制御量ΔＶを演算すると、不正確な値の電圧制御量ΔＶが出力されてしまう。したがって、前回のタイムスライスにおいて、０以外の電圧制御量ΔＶが出力された場合、電源電圧ＶDDが更新中である今回のタイムスライスにおいて電圧制御量ΔＶは０とされる。
【００６１】
一方、エラー未検出の状態が一定期間、継続していた場合、電圧制御量取得部５３３は、電源電圧ＶDDを降圧するための所定の降圧設定値を電圧制御量ΔＶの値として出力する。
【００６２】
エラー未検出状態継続カウンタ５３４は、電圧制御量取得部５３３の制御に従って、エラー未検出の状態が継続したタイムスライスの数を計数するものである。
【００６３】
なお、タイムスライスは、特許請求の範囲に記載のエラー検出単位期間の一例である。第１エラーカウンタ５１１は、特許請求の範囲に記載の第１エラー計数部の一例である。第２エラーカウンタ５１２は、特許請求の範囲に記載の第２エラー計数部の一例である。
【００６４】
図５は、本発明の第１の実施の形態におけるタイムスライス制御部５２０の動作結果の一例を示す真理値表である。ダウンカウンタ５２１のカウンタ値が１２８または１２７である場合、タイムスライス制御部５２０は、スライス開始フラグおよび電圧制御フラグの値を０にする。この期間は、タイムスライスにおいて、待機サイクルに含まれる。そして、ダウンカウンタ５２１のカウンタ値が１２６になったとき、タイムスライス制御部５２０は、スライス開始フラグを１にして出力する。
【００６５】
ダウンカウンタ５２１のカウンタ値が１２５乃至１２０である間、タイムスライス制御部５２０は、スライス開始フラグおよび電圧制御フラグの値を０にする。この期間は、電圧制御量算出サイクルに区分される。電圧制御量算出サイクルの長さには、電圧制御量ΔＶの演算が終了するまでに十分な時間が設定される。電圧制御量算出サイクルの長さを複数クロックサイクルに設定した場合、電圧制御量ΔＶの演算が複数クロックサイクルに渡って行われることが許容される。しかし、その場合であっても、１クロックサイクルで直ちに算出が終了するように、制御量演算部５３０に回路が実装されてもよいのは勿論である。ダウンカウンタ５２１のカウンタ値が１１９乃至６４である間、タイムスライス制御部５２０は、電圧制御フラグの値を１にして出力する。この期間は、電圧制御量供給サイクルに区分される。電圧制御量供給サイクルの長さには、電源装置７００が電圧制御フラグを受け取るのに十分な時間が設定される。ダウンカウンタ５２１のカウンタ値が６３乃至０である間、タイムスライス制御部５２０は、スライス開始フラグおよび電圧制御フラグの値を０にする。この期間は、タイムスライスにおいて、待機サイクルに含まれる。
【００６６】
図６は、本発明の第１の実施の形態における対数演算部５３２の演算結果の一例を示す表である。対数演算部５３２は、第２エラー数を示すビット列において１のビットのうちの最上位桁のビットの桁から１を減算した値を出力するプライオリティエンコーダなどにより実現される。この出力値は、２を底とした第２エラー数Ｅ２の対数から小数点以下を切り捨てた値になる。例えば、第２エラー数を示すビット列が「００００００１１」である場合、２桁目より下位の１桁目のビットが０に置き換えられた「００００００１０」が演算される。そして、このビット列のうちの１のビットの桁（「２」）から１を減算した値（「１」）を示すビット列「００１」が出力される。また、第２エラー数が「０００００１１１」である場合、２桁目以降のビットが全て０に置き換えられた「０００００１００」が演算される。そして、このビット列のうちの１のビットの桁（「３」）から１を減算した値（「２」）を示すビット列「０１０」が出力される。
【００６７】
図７は、本発明の第１の実施の形態における第２エラー発生率Ｒ２と電源電圧ＶDDとの間の関係の一例を示すグラフである。図７において縦軸は、第２エラー発生率Ｒ２であり、横軸は電源電圧ＶDDである。図７に示した例では、電源電圧ＶDDの低下に伴って、第２エラー発生率Ｒ２が指数関数的に増大している。
【００６８】
図８は、本発明の第１の実施の形態における第２エラー発生率Ｒ２の対数と電源電圧ＶDDとの間の関係の一例を示すグラフである。図８において縦軸は、第２エラー発生率Ｒ２の対数（＝log2Ｒ２）であり、横軸は電源電圧ＶDDである。図７における、電源電圧ＶDDと第２エラー発生率Ｒ２との間の指数関係は、図８に示すように、第２エラー発生率Ｒ２の対数と電源電圧ＶDDとの間の比例関係に近似することができる。この比例関係から、ある第２エラー発生率Ｒ２が検出されたときに、その第２エラー発生率Ｒ２に対応する電源電圧ＶDDを最低動作電圧Ｖminにするための電圧制御量ΔＶが算出される。
【００６９】
図９は、本発明の第１の実施の形態における対数演算部５３２の出力値と電圧制御量ΔＶとの間の関係の一例を示すグラフである。図９において縦軸は電圧制御量ΔＶであり、横軸は対数演算部５３２の出力値である。対数演算部５３２は、タイムスライス（１２９サイクル）内に検出された第２エラー数Ｅ２の対数の近似値（≒log2Ｅ２）を演算して出力する。１２９サイクル内の第２エラー数Ｅ２は、第２エラー発生率Ｒ２に１２９を乗算した値であるから、log2Ｅ２は、図８における縦軸のlog2Ｒ２にlog2１２９を加算した値となる。図８に例示したように、第２エラー発生率Ｒ２の対数と電源電圧ＶDDとの間に比例関係があったため、図９に示すように電圧制御量ΔＶは、出力値に比例して変化する。電圧制御量変換テーブル５３１には、図９に例示した比例関係に基づいて、対数演算部５３２の出力値ごとに、その出力値に対応する電圧制御量ΔＶが設定される。
【００７０】
図１０は、電圧制御量変換テーブル５３１に記憶される情報の一例である。電圧制御量変換テーブル５３１には、対数演算部５３２の各出力値に対応付けて電圧制御量ΔＶが設定される。各出力値には、電源電圧を所定電圧降圧するための降圧用設定値（例えば、−１）と、第２エラー数の対数と電源電圧との間の比例関係に基づいて設定された値とが電圧制御量ΔＶとして対応付けられる。ここで、降圧用設定値は、対数演算部５３２の出力値が０であり、かつ、エラー未検出状態継続フラグが１である場合に電圧制御量変換テーブル５３１から読み出される。
【００７１】
ここで、エラー未検出状態継続フラグは、所定数（ＣＦＧ＿ＣＯＵＮＴ）以上のタイムスライスの間、エラー未検出の状態が継続した場合に１が設定され、そうでない場合に０が設定されるフラグである。つまり、ＣＦＧ＿ＣＯＵＮＴ以上、エラー未検出の状態が継続した場合に、降圧用設定値が電圧制御量ΔＶの値として出力される。
【００７２】
なお、ＣＦＧ＿ＣＯＵＮＴの示すタイムスライスの期間は、特許請求の範囲に記載の判断基準期間の一例である。
【００７３】
図１０において、出力値は２進数で表記され、電圧制御量ΔＶは符合付き２進数で表記されている。エラー発生率の対数と電圧制御量との間の比例関係に基づいて、例えば、出力値「００１」に対応付けて「０００１」の電圧制御量ΔＶが設定される。また、出力値「０１０」、「０１１」、「１００」に対応付けて「００１０」、「００１１」、「０１００」の電圧制御量ΔＶが設定される。このように、対数演算部５３２の出力値、すなわち第２エラー数の対数に比例した値が電圧制御量ΔＶに設定される。なお、図１０に例示した電圧制御量ΔＶの各値は、図９に例示した比例関係が観察された回路とは別の回路から得られた比例関係に基づいて設定されたものである。
【００７４】
図１１は、本発明の第１の実施の形態における電源装置７００の一構成例を示すブロック図である。電源装置７００は、ステートマシン７１０と、切替器７２０および７４０と、加算器７３０と、電圧指標値レジスタ７５０と、電源回路７６０とを備える。
【００７５】
切替器７２０は、ステートマシン７１０の制御に従って、情報処理装置１００からの電圧制御量ΔＶとΔＶmaxとを切り替えて加算器７３０に出力するものである。
【００７６】
加算器７３０は、電圧指標値レジスタ７５０から出力された電源電圧ＶDDに切替器７２０の出力値を加算するものである。加算器７３０は、加算結果をＶDD_Nextとして、切替器７４０の入力端子に出力する。
【００７７】
切替器７４０は、ステートマシン７１０の制御に従って、加算器７３０からのＶDD_Nextとステートマシン７１０から出力された電源電圧の初期値ＶDD_Initとを切り替えて電圧指標値レジスタ７５０に出力するものである。
【００７８】
電圧指標値レジスタ７５０は、ステートマシン７１０の制御に従って、切替器７４０の出力値を保持するとともに加算器７３０および電源回路７６０に出力するものである。
【００７９】
電源回路７６０は、電圧指標値レジスタ７５０からの出力値に基づいて電源電圧ＶDDを制御するものである。電源回路７６０は、供給している電源電圧ＶDDの現在値を、電圧指標値レジスタ７５０の出力値に近づける制御を行う。電源回路７６０は、電源電圧ＶDDを情報処理装置１００に供給する。
【００８０】
ステートマシン７１０は、切替器７２０および７４０と、加算器７３０と、電圧指標値レジスタ７５０とを制御するものである。詳細には、ステートマシン７１０は、電源装置７００に電源が投入されると、電源電圧の初期値ＶDD_Initを切替器７４０に出力する。そして、ステートマシン７１０は、切替器７４０および電圧指標値レジスタ７５０を制御して、初期値ＶDD_Initを電圧指標値レジスタ７５０に保持させる。初期値ＶDD_Initを保持させた後、ステートマシン７１０は、情報処理装置１００からの電圧制御フラグの受付けを開始する。
【００８１】
電圧制御フラグを連続して受け取ったクロックサイクル数が更新設定値（例えば、２）以上であると、ステートマシン７１０は、電源電圧ＶDDに電圧制御量ΔＶを加算した値で電圧指標値レジスタ７５０の値を更新する。具体的には、ステートマシン７１０は、切替器７２０を制御して電圧制御量ΔＶを加算器７３０に入力し、切替器７４０および電圧指標値レジスタ７５０を制御して加算器７３０の加算結果ＶDD_Nextで電圧指標値レジスタ７５０の値を更新する。
【００８２】
また、電圧制御フラグの立下りから、ｍ（ｍは、１以上の整数）回、クロックサイクルが経過するまでの期間（以下、「安定化期間」と称する）において、ステートマシン７１０は、１の電圧制御フラグを受け付けない。
【００８３】
また、ステートマシン７１０は、ｎ（ｎは、ｍより大きい整数）回、連続して電圧制御フラグを受け取らなかった場合、深刻なシステムエラーが情報処理装置１００に生じたと判断する。この場合、ステートマシン７１０は、切替器７２０および７４０と電圧指標値レジスタ７５０とを制御して、電源電圧ＶDDにΔＶmaxを加算した値で電圧指標値レジスタ７５０の値を更新する。
【００８４】
ここで、ステートマシン７１０は、電圧制御量ΔＶに重み付けを行って、電源電圧ＶDDに加算させてもよい。例えば、ステートマシン７１０が２倍の重み付けを行い、ΔＶが−１、電源電圧ＶDDの更新前の値が１２５である場合、電源電圧ＶDDは１２３に更新される。重み付けが許容されるのは、電圧指標値レジスタ７５０の値が実際に出力される電源電圧を決定するためのファクターであるものの、その値と実際の電源電圧とが比例関係にあるとは限らないためである。実際には、電源回路７６０内のＤＣ電源生成回路と、その電源によって動作する全ての回路との間の相互作用により、電圧指標値レジスタ７５０の値と実際の電源電圧との間の関係が定められる。
【００８５】
［情報処理システムの動作］
続いて、図１２乃至２０を参照して、本発明の第１の実施の形態の情報処理システムの動作について説明する。図１２は、本発明の第１の実施の形態における電圧制御量取得部５３３の動作の一例を示すフローチャートである。この動作は、情報処理装置１００に電源電圧ＶDDが供給された場合、または、電圧制御量取得部５３３に初期化が指示された場合に開始する。
【００８６】
電圧制御量取得部５３３は、エラー未検出状態継続カウンタ５３４をリセットし、各種のフラグを初期化する（ステップＳ９１０）。そして、電圧制御量取得部５３３は、スライス開始フラグが１であるか否かを判断する（ステップＳ９１５）。
【００８７】
スライス開始フラグが１であれば（ステップＳ９１５：Ｙｅｓ）、電圧制御量取得部５３３は、電圧制御量ΔＶを取得するための電圧制御量取得処理を実行する（ステップＳ９２０）。スライス開始フラグが０である場合（ステップＳ９１５：Ｎｏ）、または、ステップＳ９２０の後、電圧制御量取得部５３３は、ステップＳ９１５に戻る。
【００８８】
図１３は、本発明の第１の実施の形態における電圧制御量取得処理の一例を示すフローチャートである。電圧制御量取得部５３３は、第１エラー数が０であるか否かを判断する（ステップＳ９２１）。第１エラー数が０でない場合（ステップＳ９２１：Ｎｏ）、電圧制御量取得部５３３は、エラー未検出状態継続カウンタ５３４をリセットし、電圧制御量ΔＶとしてΔＶmaxを出力し、緊急昇圧を試みる（ステップＳ９２２）。
【００８９】
第１エラー数が０である場合（ステップＳ９２１：Ｙｅｓ）、電圧制御量取得部５３３は、破棄フラグが０であるか否かを判断する（ステップＳ９２３）。
【００９０】
ここで、破棄フラグは、前回のタイムスライスにおいて演算された電圧制御量ΔＶが０でない場合に１が設定され、そうでない場合に０が設定されるフラグである。破棄フラグは、０以外の電圧制御量ΔＶが出力されたタイムスライスの次のタイムスライスでは電圧制御量を０にするために使用される。ステップＳ９１０の初期化において、破棄フラグは、例えば、０に初期化される。なお、破棄フラグは、１に初期化されてもよい。システム立ち上げ直後の電源の不安定さが忌避されるならば、破棄フラグは１に初期化されることが望ましい。そうでない場合は、破棄フラグは０に初期化される。
【００９１】
破棄フラグが１である場合（ステップＳ９２３：Ｎｏ）、電圧制御量取得部５３３は、破棄フラグを０にし、電圧制御量ΔＶを０にする（ステップＳ９２４）。
【００９２】
破棄フラグが０である場合（ステップＳ９２３：Ｙｅｓ）、電圧制御量取得部５３３は、第２エラーが未検出（すなわち、第２エラーの発生率が第２の閾値以下）であり、かつ、エラー未検出状態継続フラグが１であるか否かを判断する（ステップＳ９２５）。
【００９３】
第２エラーが検出された場合、または、エラー未検出状態継続フラグが０である場合（ステップＳ９２５：Ｎｏ）、電圧制御量取得部５３３は、第２エラー数Ｅ２の対数に対応する値を電圧制御量変換テーブル５３１から読み出す。電圧制御量取得部５３３は、読み出した値をΔＶとして出力する（ステップＳ９２６）。
【００９４】
第２エラーが未検出であり、かつ、エラー未検出状態継続フラグが１である場合（ステップＳ９２５：Ｙｅｓ）、電圧制御量取得部５３３は、電圧制御量変換テーブル５３１から降圧用設定値（例えば、−１）を読み出してΔＶとして出力する（ステップＳ９２７）。
【００９５】
ステップＳ９２６またはＳ９２７の後、電圧制御量取得部５３３は、今回、取得した電圧制御量ΔＶが０であるか否かを判断する（ステップＳ９２８）。電圧制御量ΔＶが０でない場合（ステップＳ９２８：Ｎｏ）、電圧制御量取得部５３３は、破棄フラグを１にする（ステップＳ９２９）。
【００９６】
ステップＳ９２９の後、または、電圧制御量ΔＶが０である場合（ステップＳ９２８：Ｙｅｓ）、電圧制御量取得部５３３は、エラー未検出状態継続判断処理を実行する（ステップＳ９４０）。ステップＳ９２２、Ｓ９２４、または、ステップＳ９４０の後、電圧制御量取得部５３３は、電圧制御量取得処理を終了する。
【００９７】
図１４は、本発明の第１の実施の形態におけるエラー未検出状態継続判断処理の一例を示すフローチャートである。電圧制御量取得部５３３は、第２エラー数が０であるか否かを判断する（ステップＳ９４１）。第２エラー数が０でない場合（ステップＳ９４１：Ｎｏ）、電圧制御量取得部５３３は、エラー未検出状態継続カウンタ５３４をリセットし、エラー未検出状態継続フラグを０にする（ステップＳ９４２）。
【００９８】
第２エラー数が０である場合（ステップＳ９４１：Ｙｅｓ）、電圧制御量取得部５３３は、エラー未検出状態継続カウンタ５３４のカウンタ値をカウントアップする（ステップＳ９４３）。そして、電圧制御量取得部５３３は、エラー未検出状態継続カウンタ５３４のカウンタ値がＣＦＧ＿ＣＯＵＮＴ以上であるか否かを判断する（ステップＳ９４４）。
【００９９】
カウンタ値がＣＦＧ＿ＣＯＵＮＴ以上である場合（ステップＳ９４４：Ｙｅｓ）、電圧制御量取得部５３３は、エラー未検出状態継続フラグを１にする（ステップＳ９４５）。カウンタ値がＣＦＧ＿ＣＯＵＮＴ未満である場合（ステップＳ９４４：Ｎｏ）、電圧制御量取得部５３３は、エラー未検出状態継続フラグを０にする（ステップＳ９４６）。
【０１００】
ステップＳ９４２、Ｓ９４５、または、Ｓ９４６の後、電圧制御量取得部５３３は、エラー未検出状態継続判断処理を終了する。
【０１０１】
図１５は、本発明の第１の実施の形態における情報処理装置の動作の一例を示すタイミングチャートである。タイムスライスにおける待機サイクルが経過したとき、スライス開始フラグ生成部５２２は、スライス開始フラグを生成して電圧制御量取得部５３３に信号線９２３を介して出力する。そして、スライス開始フラグ生成部５２２は、スライス開始フラグの出力後に信号線９２４を介してリセット信号を出力する。電圧制御量取得部５３３は、スライス開始フラグを受け取ると、対数演算部５３２の出力値に対応する値を電圧制御量変換テーブル５３１から読み出し、電圧制御量ΔＶとして信号線９１２を介して出力する。リセット信号の出力タイミングは、新たな電圧制御量ΔＶが演算された後に第１エラーカウンタ５１１および第２エラーカウンタ５１２がリセットされるように設定される。
【０１０２】
電圧制御量算出サイクルが経過すると、電圧制御フラグ生成部５２３は、信号線９１１を介して電圧制御フラグの電源装置７００への出力を開始する。電圧制御供給サイクルが経過すると、電圧制御フラグ生成部５２３は、電圧制御フラグの出力を停止する。電圧制御供給サイクルの長さは、電圧制御供給サイクルの経過前に、電源装置７００が、電圧制御フラグの信号遷移を捕捉できるように設定される。
【０１０３】
図１６は、本発明の第１の実施の形態における電源装置７００の動作の一例を示すタイミングチャートである。信号線９１２を介して、電圧制御量ΔＶが電源装置７００に出力され、その後に信号線９１１を介して電圧制御フラグが出力される。ステートマシン７１０は、連続して電圧制御フラグを受け取ったのであれば、電圧指標値レジスタ７５０の値を、電源電圧ＶDDに電圧制御量ΔＶを加算した値に更新する。例えば、電圧指標値レジスタ７５０の値が「１２５」であり、「−１」の値の電圧制御量ΔＶを受け取ってから、連続して電圧制御フラグを受け取った場合について考える。この場合、電圧指標値レジスタ７５０の値は、「１２４」の値に更新される。電源回路７６０は、電圧指標値レジスタ７５０の値になるように電源電圧ＶDDを制御しつつ、情報処理装置１００にケーブル９１０を介して供給する。
【０１０４】
図１７は、本発明の第１の実施の形態における情報処理システムの動作の一例を示すタイミングチャートである。情報処理装置１００において、第２エラーカウンタ５１２は、タイムスライス内において検出された第２エラー数を計数して信号線９２２を介して出力する。電圧制御量取得部５３３は、前回のタイムスライスにおいて計数された第２エラー数を参照し、その第２エラー数の対数に対応する電圧制御量ΔＶを電圧制御量変換テーブル５３１から読み出し、信号線９１２を介して出力する。新たな電圧制御量ΔＶが出力された後に、電圧制御フラグ生成部５２３は、電圧制御フラグを電源装置７００に信号線９１１を介して出力する。
【０１０５】
一方、電源装置７００において、ステートマシン７１０は、電圧制御フラグを受け取ると、電圧指標値レジスタ７５０の値を電圧制御量ΔＶに電源電圧ＶDDを加算した値で更新する。電源回路は、ケーブル９１０を介して電源を供給しつつ、更新された電圧指標値レジスタ７５０の値になるように電源電圧ＶDDを制御する。
【０１０６】
なお、図１７乃至２０では、第１エラーカウンタ５１１が計数した第１エラー数は省略されている。図１７乃至２０の全てのタイムスライスにおいて、第１エラー数は０であったものとする。
【０１０７】
図１７において、ＣＦＧ＿ＣＯＵＮＴに０が設定され、タイムスライス＃０において第２エラー数が「０」であった場合について考える。この場合、エラー未検出の状態がＣＦＧ＿ＣＯＵＮＴ以上継続していたため、次のタイムスライス＃１において、電圧制御量取得部５３３は、降圧設定値「−１」を電圧制御量ΔＶとして出力する。ΔＶに０以外の値が出力されたため、次のタイムスライス＃２において、電圧制御量取得部５３３は、電圧制御量ΔＶを０にする。タイムスライス＃１において第２エラー数は「６０」であったが、この第２エラー数は、タイムスライス＃２において演算に用いられず、破棄される。
【０１０８】
一方、電源装置７００において、ステートマシン７１０は、タイムスライス＃１において、電圧制御フラグを受け取ると、電圧指標値レジスタ７５０の値を電圧制御量ΔＶ（「−１」）に電源電圧ＶDDの現在値（「６４」）を加算した値（「６３」）で更新する。
【０１０９】
タイムスライス＃２においては、第２エラー数が「１２８」であったものとする。その次のタイムスライス＃３において、電圧制御量取得部５３３は、第２エラー数の対数に対応する値「＋７」を電圧制御量変換テーブル５３１から読み出して電圧制御量ΔＶとして出力する。
【０１１０】
一方、電源装置７００において、ステートマシン７１０は、タイムスライス＃３において、電圧制御フラグを受け取ると、電圧指標値レジスタ７５０の値を電圧制御量ΔＶ（「＋７」）に電源電圧ＶDDの現在値（「６３」）を加算した値（「７０」）で更新する。
【０１１１】
図１７に例示したように、電源電圧は、タイムスライスを単位期間として、変動と安定とを繰り返すことになる。また、電源電圧は、０以外の電圧制御量ΔＶが出力されても直ちに変動せず、電源電圧の更新が完了するまでには、ある程度の時間を要する。例えば、タイムスライス＃３において、電圧指標値レジスタ７５０は、「６３」から「７０」に更新されるが、タイムスライス＃３においては「７０」に対応する値への電源電圧の更新が完了していない。更新が完了するのは、タイムスライス＃４になったときである。したがって、このタイムスライス＃３において検出された第２エラーの数は、「７０」に対応する値の電源電圧のときのものであるとは言い難い。このため、タイムスライス＃３において検出された第２エラーの数はタイムスライス＃４において演算に使用されず、破棄される。
【０１１２】
図１８は、本発明の第１の実施の形態における安定状態の情報処理システムの動作の一例を示すタイミングチャートである。ＣＦＧ＿ＣＯＵＮＴに２が設定され、タイムスライス＃１１において、降圧設定値「−１」が設定された場合について考える。電圧制御量ΔＶに０以外の値が出力されたため、次のタイムスライス＃１２において、電圧制御量取得部５３３は、電圧制御量ΔＶを「０」にする。タイムスライス＃１１において計数された第２エラー数「３」は、破棄される。そして、タイムスライス＃１２および＃１３においても第２エラー数が「０」であったとする。この場合、タイムスライス＃１２および＃１３においては、エラー未検出の状態の継続期間がＣＦＧ＿ＣＯＵＮＴ（「２」）未満であり、第２エラー数が０であるため、タイムスライス＃１３および＃１４において電圧制御量ΔＶは「０」とされる。タイムスライス＃１５においては、エラー未検出の状態の継続期間がＣＦＧ＿ＣＯＵＮＴ（「２」）以上となり、直前のタイムスライス内の第２エラー数も０であったため、電圧制御量取得部５３３は、降圧設定値「−１」を電圧制御量ΔＶとして出力する。
【０１１３】
図１８のタイムスライス＃１２乃至１４に例示したように、電圧制御量ΔＶを演算したものの、その値が「０」であった場合には、実質的な電圧変動は生じない。したがって、このような場合には、制御量演算部５３０は、タイムスライス＃１３乃至１５において、連続して、直前のタイムスライスのエラー数を参照して演算を行うことができる。
【０１１４】
図１９は、本発明の第１の実施の形態における制御量演算部５３０の動作の一例を示すタイミングチャートである。ＣＦＧ＿ＣＯＵＮＴに２が設定され、タイムスライス＃１において、電圧制御量ΔＶとして「１」が出力された場合について考える。電圧制御量ΔＶが０でないため、電圧制御量取得部５３３は、破棄フラグに「１」を設定する。次のタイムスライス＃２においては、破棄フラグが１であるため、電圧制御量取得部５３３は、第２エラー数に関らず、電圧制御量ΔＶを「０」にする。
【０１１５】
タイムスライス＃２および＃３においては、第２エラー数が「０」であったため、タイムスライス＃３および＃４において電圧制御量取得部５３３は、エラー未検出状態継続カウンタ５３４をカウントアップする。この結果、タイムスライス＃５において、エラー未検出状態継続カウンタ５３４のカウンタ値がＣＦＧ＿ＣＯＵＮＴ（「２」）以上となる。加えて、直前のタイムスライス＃４内で計数された第２エラー数が０であったため、電圧制御量取得部５３３は、降圧設定値「−１」を電圧制御量ΔＶとして出力する。その後のタイムスライスにおいても、第２エラー数が「０」である限り、エラー未検出状態継続カウンタ５３４がカウントアップされ、１タイムスライスおきに電圧制御量ΔＶは、降圧設定値「−１」とされる。
【０１１６】
図１９に例示したように、第１エラーおよび第２エラーが未検出の状態がＣＦＧ＿ＣＯＵＮＴ以上、継続すると、その後は、第１エラーまたは第２エラーが検出されない限り、徐々に電源電圧が降下される降圧モードに移行する。
【０１１７】
図２０は、本発明の第１の実施の形態における安定状態の制御量演算部５３０の動作の一例を示すタイミングチャートである。図２０は、図１９の最後のタイムスライス＃８より後の制御量演算部５３０の動作を示すものである。電源電圧が図１９に例示したように徐々に降下していくと、いつかは第１エラーまたは第２エラーが発生する。図２０では、第１エラーは検出されていないがタイムスライス＃１０において第２エラー数が「２０」計数されている。この場合、タイムスライス＃１１において、電圧制御量取得部５３３は、第２エラー数の対数に対応する「４」を電圧制御量変換テーブル５３１から読み出して電圧制御量ΔＶとして出力する。電源電圧ＶDDの昇圧により、エラーの発生率が低減し、タイムスライス＃１２以降は、第２エラー数として「１」、「０」が交互に計数される。第２エラー数として「１」および「０」が交互に計数されると、第２エラー数「１」のときに、電圧制御量取得部５３３がエラー未検出状態継続カウンタ５３４をリセットするため、カウンタ値がＣＦＧ＿ＣＯＵＮＴ以上とならない。したがって、降圧設定値が出力されない。また、第２エラー数が第２の閾値（１／１２９）に対応する値（「１」）以下であるため、電圧制御量ΔＶは０とされる。この結果、第２エラー数が１より大きくならない限り、電源電圧ＶDDが変動しない安定な状態となる。
【０１１８】
次に図２１および図２２を参照して、第２パリティビットを生成する意義について説明する。図２１は、情報処理装置の誤動作の原因をまとめた表である。図２１に例示したように、誤動作の原因となるエラーは、タイミング違反性エラーと、それ以外のエラーとに分けることができる。タイミング違反性エラーには、セットアップ違反性エラー、ホールド違反性エラー、および、最小パルス幅違反性エラーなどがある。タイミング違反性エラー以外のエラーには、Ｆ／Ｆリテンション性エラーや論理ゲートＤＣ伝達特性エラーなどがある。
【０１１９】
セットアップ違反性エラーとは、入力側にデータの取り込みが指示されるタイミングに先立って、出力側の回路が予めデータ信号を出力し続けるべき時間（セットアップタイム）が設計値より短いことにより生じるエラーである。
【０１２０】
例えば、図１に例示した情報処理装置１００において、あるクロック信号ＣＬＫの遷移のタイミングに対して演算器３１０からのデータの遷移タイミングの遅延が比較的大きくなってしまった場合を考える。この場合、次のクロック信号ＣＬＫの遷移のタイミングに先立って、演算器３１０がデータを出力し続けるべき時間（セットアップタイム）が設計値より小さくなることがある。この結果、パイプラインレジスタ２２０に誤った値が保持されてセットアップ違反性エラーが発生する。
【０１２１】
図２１に記載のホールド違反性エラーとは、入力側の回路が、データの取り込みを指示されてからデータを保持し続けるべき時間（ホールドアップタイム）が設計値より短いことにより生じるエラーである。
【０１２２】
最小パルス幅違反性エラーとは、供給クロックのデューティー比が崩れるなどして、クロック信号のパルス幅が、フリップフロップの規定する最小パルス幅に満たなくなったことを原因として生じるエラーである。
【０１２３】
Ｆ／Ｆリテンション性エラーとは、フリップフロップが同一値を保持する期間が、設計値より短くなったために生じるエラーである。
【０１２４】
論理ゲートＤＣ伝達特性エラーとは、論理回路上の「０」、「１」に対応する電位が、電源やグランドの電位などの完全な電位とならない不完全な状態となることにより生じるエラーである。
【０１２５】
図２１に例示したように、エラー緩和の動的手法としては、動作周波数を遅くしたり、電源電圧ＶDDを昇圧したりする方法がある。エラー緩和の静的手法としては、セットアップマージンを増加したり、ホールドマージンを増加したりする方法がある。静的手法が困難である場合、電源電圧ＶDDを昇圧するなどの動的手法が選択される。
【０１２６】
電源電圧ＶDDを昇圧してエラーを緩和する場合、電源電圧ＶDDごとにエラーの発生率を測定し、その測定結果から、誤動作が生じない電源電圧を推測する。
【０１２７】
情報処理装置１００では、パリティ検査を行うことにより、図２２に例示した各種のエラーを検出することができる。特に、情報処理装置１００は、第１パリティビットから第２パリティビットを生成している。このため、第１パリティビットしか生成しない場合と比較してセットアップ違反性エラーを確実に検出することができる。
【０１２８】
第２パリティビットの生成により、セットアップ違反性エラーを確実に検出できる理由について説明する。まず、クロック信号ＣＬＫの周期をｔＣＫとし、演算器３１０の遷移タイミングの遅延時間をｔＤＰ_maxとする。第１パリティビットの生成タイミングは、演算器３１０によるデータの生成タイミングに対して遅延する。この遅延時間をｔＳＴ１とする。第２パリティビットは、第１パリティビットから生成されるため、第２パリティビットの生成タイミングは、第１パリティビットの生成タイミングに対して遅延する。この遅延時間をｔＳＴ２とする。ここで、
ｔＣＫ１＞ｔＤＰ_max、かつ、
ｔＣＫ１≦（ｔＤＰ_max＋ｔＳＴ１）
の条件を満たすクロック周期ｔＣＫ１を考える。ｔＣＫ１＞ｔＤＰ_maxであるため、演算結果はパイプラインレジスタ２２０に書き込まれる。しかし、ｔＣＫ１≦（ｔＤＰ_max＋ｔＳＴ１）であるため、第１パリティビットの生成が間に合わず、第１エラーが検出される。このように、データの生成が間に合うが第１パリティビットの生成が間に合わないほどクロック周期が小さいのであれば、第１パリティビットによるパリティ検査によりSetup違反性エラーを検出できる。次に、
ｔＣＫ２＞（ｔＤＰ_max＋ｔＳＴ１）、かつ、
ｔＣＫ２≦（ｔＤＰ_max＋ｔＳＴ１＋ｔＳＴ２）
の条件を満たすクロック周期ｔＣＫ２（＞ｔＣＫ１）を考える。ｔＣＫ２＞（ｔＤＰ_max＋ｔＳＴ１）であるため、演算結果および第１パリティビットはパイプラインレジスタ２２０に書き込まれる。しかし、ｔＣＫ２≦（ｔＤＰ_max＋ｔＳＴ１＋ｔＳＴ２）であるため、第２パリティビットの生成が間に合わず、第２エラーが検出される。このように、第１パリティビットの生成が間に合うが第２パリティビットの生成が間に合わない程度のクロック周期（ｔＣＫ２）である場合、第１パリティビットではエラーが検出されないが、第２パリティビットによりセットアップ違反性エラーが検出される。したがって、情報処理装置１００は、第２パリティビットを生成することにより、セットアップ違反性エラーをより確実に検出することができる。
【０１２９】
情報処理装置１００は、上述したように第２パリティビットによりセットアップ違反性エラーを確実に検出することができるほか、第１のパリティビットにより、セットアップ違反性エラー以外の各種のエラーも検出することができる。これに対して、図２２にまとめたように、前述のＥＤＳおよびＴＲＣを使用する技術では、セットアップ違反性エラーしか検出することができない。また、前述のＴＤ回路では、セットアップ違反性エラーおよびホールド違反性エラーしか検出することができない。
【０１３０】
このように、本発明の第１の実施の形態によれば、情報処理装置１００は、第１パリティビットを使用して第１エラーを検出し、第１パリティビットから生成した第２パリティビットを使用して第２エラーを検出する。そして、情報処理装置１００は、第１エラーの発生率が第１の閾値以下であるときに、第２の閾値を第２エラーの発生率の目標値として電源電圧を制御する電圧制御量を出力する。これにより、第１パリティビットを使用した検査により検出できないタイミング違反性エラーを、第２パリティビットを使用して検出することできる。したがって、第２パリティビットにより検出された第２エラーの発生率を第２の閾値にするための電圧制御量を出力することにより、タイミング違反性エラーの発生を防止することができる。また、情報処理装置１００は、ＥＤＳおよびＴＲＣやＴＤ回路のように、特殊なフリップフロップを備える必要がない。このため、情報処理装置１００は、回路規模が比較的小さくて済む。さらに、情報処理装置１００は、タイミング違反性エラーに加えて、タイミング違反性エラー以外のエラーも第１パリティビットから検出できる。したがって、誤動作が生じない正確な電源電圧を容易に設定することができる。
【０１３１】
また、制御量出力部５００は、タイムスライス内に検出された第１エラーおよび第２エラーの数を計数する第１エラーカウンタ５１１および第２エラーカウンタ５１２を備える。これにより、情報処理装置１００の動作中にエラー発生率を求め、動的に電源電圧を制御することができる。
【０１３２】
また、電圧制御量取得部５３３は、対数演算部５３２が演算した第２エラー数の対数に対応する電圧制御量ΔＶを電圧制御量変換テーブル５３１から取得する。これにより、電圧制御量取得部５３３は、対数から電圧制御量ΔＶを演算する必要がなくなり、容易に電圧制御量ΔＶを取得することができる。
【０１３３】
また、対数演算部５３２は、第２エラー数を２進表記したビット列において１のビットの最上位の桁から１を減算した値を、第２エラー数の対数として出力する。これにより、対数演算部５３２は、簡易なビット演算により、第２エラー数の対数を容易に算出することができる。
【０１３４】
また、制御量出力部５００は、第１エラーの発生率が第１の閾値より大きければ、電源電圧を所定電圧昇圧するための電圧制御量ΔＶmaxを出力する。これにより、情報処理装置１００に誤動作が生じることを、より確実に防止することができる。
【０１３５】
また、制御量出力部５００は、所定の判断基準期間（例えば、ＣＦＧ＿ＣＯＵＮＴ）以上の間、エラー未検出であれば、電源電圧を所定電圧降圧するための電圧制御量を出力する。これにより、誤動作を防止しつつ、消費電力に対する演算処理効率を向上させることできる。
【０１３６】
さらに、制御量演算部５３０は、前回のタイムスライスに生成した電圧制御量ΔＶが０であったならば、第２エラーの発生率と電源電圧との間の関係に基づいて、今回の電圧制御量ΔＶを演算して出力する。この構成によれば、電源電圧の更新中に検出されたエラーの数に基づいて電圧制御量を演算することがなくなり、正確な電圧制御量ΔＶを出力することができる。
【０１３７】
なお、情報処理装置１００は、エラー検出にパリティビットを使用しているが、エラーを検出できるのであれば、パリティビット以外のエラー検出符号を使用することもできる。例えば、情報処理装置１００は、チェックサムやハッシュ関数などを使用してエラーを検出してもよい。
【０１３８】
また、情報処理装置１００は、パイプラインレジスタ２１０および２２０にデータおよびパリティビットを保持しているが、データ等を保持するデバイスは、パイプラインレジスタに限定されない。
【０１３９】
また、情報処理装置１００は、演算器３１０によりデータを処理しているが、演算器以外の回路によりデータを処理することもできる。
【０１４０】
また、電圧制御量取得部５３３は、第２エラー数の対数に対応する電圧制御量を電圧制御量変換テーブル５３１から取得している。しかし、電圧制御量取得部５３３は電圧制御量変換テーブル５３１を備えず、第２エラー数の対数に対して演算を行うことにより、電圧制御量を生成してもよい。例えば、電圧制御量取得部５３３は、図９に例示した第２エラー数の対数と、電圧制御量との間の比例関係を示す関係式を定義しておき、第２エラー数の対数を、その関係式に代入して演算することにより電圧制御量ΔＶを生成することもできる。
【０１４１】
また、情報処理装置１００は、第２エラーの発生率と電源電圧との間の指数関係を、第２エラーの発生率の対数と電源電圧との間の比例関係に近似することにより、電圧制御量ΔＶの取得を容易にしている。しかし、情報処理装置１００は、電圧制御量ΔＶの取得が容易になるのであれば、第２エラーの発生率の対数を求める演算以外の演算により、近似を行ってもよい。
【０１４２】
また、対数演算部５３２は、ビット列において１のビットの最上位桁から１を減算することにより、対数を演算しているが、他の演算方法により対数を演算してもよい。
【０１４３】
また、タイムスライス制御部５２０では、タイムスライスの長さが１２９に設定されているが、タイムスライスの長さは任意に設定できる。また、タイムスライス内の待機サイクルなどの各サイクルの開始タイミングや長さも任意に設定可能である。
【０１４４】
また、情報処理装置１００は、第１エラー数が１以上であった場合に緊急昇圧を行っているが、緊急昇圧のほか、エラー回復処理や復旧処理などを実行することもできる。
【０１４５】
また、タイムスライス制御部５２０は、各タイムスライスにおいて、所定のタイミングで電圧制御フラグを生成している。しかし、タイムスライス制御部５２０は、演算された電圧制御量ΔＶを参照し、図２３に示すように、ΔＶが０でない場合にのみ、電圧制御フラグを生成することもできる。
【０１４６】
また、情報処理装置１００は、パリティ生成部およびパリティ検査部を１つずつ備えているが、図２４に示すように、それぞれを複数備えることもできる。図２４におけるパリティ生成部＃１および＃２は、図１におけるパリティ生成部４１０と同様の構成である。また、図２４におけるパリティ検査部＃１および＃２は、図１におけるパリティ検査部４５０と同様の構成である。この場合、第１エラー検出情報および第２エラー検出情報は、それぞれ、複数ビット生成される。この場合、制御量出力部５００は、各クロックサイクルにおいて、各パイプラインで検出された第１エラーの合計値を第１エラーカウンタのカウンタ値に加算する。第２エラーについても同様に、各クロックサイクルにおいて、各パイプラインで検出された第２エラーの合計値が第２エラーカウンタのカウンタ値に加算される。
【０１４７】
また、情報処理装置１００は、第１パリティビットから第２パリティビットを生成しているが、第２パリティビットから、さらにパリティビットを生成してもよい。例えば、図２５に示すパリティ生成部は、６４ビットのデータから１６ビットの第１パリティビットを生成し、その第１パリティビットから４ビットの第２パリティビットを生成する。さらに、パリティ生成部は、第２パリティビットから１ビットの第３パリティビットを生成する。第３パリティビットは、第２パリティビットよりさらに遅延するため、情報処理装置１００は、第２パリティビットで検出されないセットアップ違反性エラーを第３パリティビットにより確実に検出することができる。
【０１４８】
また、情報処理装置１００は、１６ビットのデータから４ビットの第１パリティビットと１ビットの第２パリティビットとを生成している。しかし、データやパリティビットのビット数は、任意である。例えば、情報処理装置１００は、３２ビットのデータから８ビットの第１パリティビットと１ビットの第２パリティビットを生成することもできる。何ビットごとにパリティビットを生成するかは、エラー検出率とハードウェアオーバーヘッドとの間のトレードオフ関係に基づいて、目的、状況に応じて適切に定められる。
【０１４９】
＜２．第２の実施の形態＞
［情報処理装置の動作］
次に図２６乃至２８を参照して、本発明の第２の実施の形態について説明する。第２の実施の形態の情報処理装置は、第２エラー数の増大を抑制するための制御をさらに行う点で第１の実施の形態の情報処理装置と異なる。図２６は、本発明の第２の実施の形態の制御量出力部５０１の一構成例を示すブロック図である。制御量出力部５０１は、制御量演算部５３０の代わりに制御量演算部５４０を備える点で第１の実施の形態の制御量出力部５００と異なる。制御量演算部５４０は、電圧制御量取得部５３３の代わりに電圧制御量取得部５４１および第１上限値記憶部５４２を備える点で第１の実施の形態の制御量演算部５３０と異なる。
【０１５０】
第１上限値記憶部５４２は、第１上限値を記憶するものである。この第１上限値は、第２エラー数の許容値であり、０以上の整数が設定される。電圧制御量取得部５４１は、第２エラー数が、第１上限値記憶部５４２から読み出した第１上限値以上であれば、破棄フラグに関らず、速やかに昇圧を行う点で第１の電圧制御量取得部５３３と異なる。
【０１５１】
図２７は、本発明の第２の実施の形態における電圧制御量取得処理の一例を示すフローチャートである。第２の実施の形態の電圧制御量取得処理は、ステップＳ９３１をさらに実行する点で第１の実施の形態の電圧制御量取得処理と異なる。
【０１５２】
第１エラー数が０である場合（ステップＳ９２１：Ｙｅｓ）、電圧制御量取得部５４１は、第２エラー数が第１上限値以上であるか否かを判断する（ステップＳ９３１）。第２エラー数が第１上限値以上であれば（ステップＳ９３１：Ｙｅｓ）、電圧制御量取得部５４１は第２エラーが未検出であり、かつ、エラー未検出状態継続フラグが１であるか否かを判断する（ステップＳ９２５）。第２エラー数が第１上限値未満であれば（ステップＳ９３１：Ｎｏ）、電圧制御量取得部５４１は破棄フラグが０であるか否かを判断する（ステップＳ９２３）。
【０１５３】
図２７に例示したように、電圧制御量取得部５４１は、ステップＳ９３１において、第２エラー数が、ある一定量（第１上限値）以上であれば、破棄フラグに関らず、速やかに昇圧を行う。第１の実施の形態では、ステップＳ９３１を備えず、電圧制御量取得部５４１は、破棄フラグを参照して、前回の電圧制御量ΔＶが０でなければ（すなわち、破棄フラグが１であれば）、電圧制御量ΔＶを０にしていた。この構成では、０以外の電圧制御量ΔＶを出力した次のタイムスライスにおいて、第２エラー数が増加していたとしても、その第２エラー数が参照されずに破棄されてしまう。ステップＳ９３１の実行により、０以外の電圧制御量ΔＶを出力した次のタイムスライスであっても、第２エラー数が、ある一定量以上であれば、昇圧が行われて第２エラー数の増大が防止される。
【０１５４】
図２８は、本発明の第２の実施の形態における制御量演算部５４０の動作の一例を示すタイミングチャートである。タイムスライス＃９において、「−１」が出力されたため、破棄フラグが１に更新される。次のタイムスライス＃１０において、電圧制御量取得部５４１は、第２エラー数（「８」）が第１上限値（例えば、「５」）以上であったため、破棄フラグの値に関らず、第２エラー数の対数に対応する値「３」を電圧制御量ΔＶとして出力する。この結果、タイムスライス＃１０において第２エラー数が「１」に減少する。
【０１５５】
第１の実施の形態では、図２０に例示したように、電圧制御量ΔＶとして「−１」が出力された次のタイムスライス＃１０において、電圧制御量取得部５４１は、破棄フラグが１であったため、第２エラー数に関りなく、電圧制御量ΔＶを０にしていた。この結果、タイムスライス＃１０において、第２エラー数が増加し、「２０」が計数されていた。これに対して、第２の実施の形態では、図２８に例示したように、電圧制御量ΔＶとして「−１」が出力された次のタイムスライス＃１０において、電圧制御量取得部５４１が、破棄フラグに関りなく、第２エラー数に応じて昇圧を試みている。したがって、第２エラー数の増加が防止される。
【０１５６】
このように、第２の実施の形態によれば、電圧制御量取得部５４１は、第２エラー数が第１上限値以上である場合、または、前回の電圧制御量ΔＶが０であった場合に第２エラー数に応じた電圧制御量ΔＶを取得する。このため、第２エラー数の増加が抑制される。
【０１５７】
＜３．第３の実施の形態＞
［情報処理装置の動作］
次に図２９乃至３１を参照して、本発明の第３の実施の形態について説明する。第３の実施の形態の情報処理装置１００は、第１エラーの発生を防止するための制御をさらに行う点で第２の実施の形態の情報処理装置１００と異なる。図２９は、本発明の第２の実施の形態の制御量出力部５０２の一構成例を示すブロック図である。制御量出力部５０２は、制御量演算部５４０の代わりに制御量演算部５５０を備える点で第２の実施の形態の制御量出力部５０１と異なる。制御量演算部５５０は、電圧制御量取得部５４１の代わりに電圧制御量取得部５５１および第２上限値記憶部５５２を備える点で第２の実施の形態の制御量演算部５４０と異なる。
【０１５８】
第２上限値記憶部５５２は、第２上限値を記憶するものである。この第２上限値は、第２エラー数の許容値であり、第１上限値より大きな整数が設定される。電圧制御量取得部５５１は、第２のエラーの発生率が、第２上限値記憶部５５２から読み出した第２上限値以上である場合に緊急昇圧を試みる点で、第２の実施の形態の電圧制御量取得部５４１と異なる。
【０１５９】
図３０は、本発明の第３の実施の形態における電圧制御量取得処理の一例を示すフローチャートである。第３の実施の形態の電圧制御量取得処理は、ステップＳ９３２をさらに実行する点で第２の実施の形態の電圧制御量取得処理と異なる。
【０１６０】
第１エラー数が０である場合（ステップＳ９２１：Ｙｅｓ）、電圧制御量取得部５３３は、第２エラー数が第２上限値以上であるか否かを判断する（ステップＳ９３２）。第２エラー数が第２上限値以上である場合（ステップＳ９３２：Ｙｅｓ）、電圧制御量取得部５５１は緊急昇圧を試みる（ステップＳ９２２）。第２エラー数が第２上限値未満である場合（ステップＳ９３２：Ｎｏ）、電圧制御量取得部５５１は、第２エラー数が第２上限値以上であるか否かを判断する（ステップＳ９３１）。
【０１６１】
第２エラー数が１０以上になると、第１エラーが発生しうるということが事前に分かっている場合を考える。この場合、第２エラー数が１０に近づいたときに電圧制御量変換テーブル５３１から得られる電圧制御量ΔＶを出力していては、第１エラーが発生する危険性を十分に低くすることができないため、少しマージンを持たせて、第２上限値に７を設定しておく。この制御により、第１エラーが発生する前に緊急昇圧が行われ、第１エラーの発生が防止される。
【０１６２】
図３１は、本発明の第３の実施の形態における制御量演算部５５０の動作の一例を示すタイミングチャートである。タイムスライス＃９において、「−１」が電圧制御量ΔＶとして出力されたため、破棄フラグに１が設定される。次のタイムスライス＃１０において、電圧制御量取得部５５１は、第２エラー数が「８」を参照し、参照した値が第２上限値（例えば、「７」）以上であったため、破棄フラグの値に関らず、緊急昇圧を試みる。この結果、タイムスライス＃１０において第２エラー数が「１」に減少する。
【０１６３】
このように、第３の実施の形態によれば、電圧制御量取得部５５１は、第２エラー数が第２上限値以上である場合に電源電圧を所定電圧昇圧するための電圧制御量ΔＶmaxを出力する。この結果、第１エラーの発生が防止される。
【０１６４】
＜４．第４の実施の形態＞
［情報処理装置の構成］
次に図３２乃至３６を参照して、本発明の第４の実施の形態について説明する。図３２は、本発明の第４の実施の形態における情報処理装置１０３の一構成例を示すブロック図である。情報処理装置１０３の構成は、クロック生成回路１１０および制御量出力部５００の代わりにクロック生成回路１１３および制御量出力部５０３を備える点において第１の実施の形態の情報処理装置１００と異なる。
【０１６５】
制御量出力部５０３は、電圧制御フラグおよび電圧制御量ΔＶの代わりに、周波数制御フラグおよび周波数制御量Δｆをクロック生成回路１１３に出力する点において第１の制御量出力部５００と異なる。周波数制御フラグは、クロック信号ＣＬＫの周波数への周波数制御量Δｆの加算をクロック生成回路１１３に指示する信号である。周波数制御量Δｆは、クロック信号ＣＬＫの周波数を制御するための制御量である。例えば、クロック信号ＣＬＫのベースクロック自体の周波数の増減値や、ベースクロックに対する倍率の増減値が周波数制御量として出力される。クロック生成回路１１３は、周波数制御量の分、クロック信号ＣＬＫの周波数を制御する。
【０１６６】
図３３は、本発明の第４の実施の形態における制御量出力部５０３の一構成例を示すブロック図である。制御量出力部５０３の構成は、タイムスライス制御部５２０および制御量演算部５３０の代わりにタイムスライス制御部５６０および周波数制御量出力部５７０を備える点において第１の実施の形態の制御量出力部５００と異なる。タイムスライス制御部５６０は、電圧制御フラグ生成部５２３の代わりに周波数制御フラグ生成部５６１を備える点において第１の実施の形態のタイムスライス制御部５２０と異なる。
【０１６７】
周波数制御フラグ生成部５６１は、ダウンカウンタ５２１のカウンタ値に基づいて周波数制御フラグを生成するものである。周波数制御フラグの出力開始のタイミングは、電圧制御フラグの出力開始のタイミングと同様である。一方、周波数制御フラグの出力期間には、電圧制御フラグの出力期間より短い期間が設定される。
【０１６８】
周波数制御量出力部５７０は、周波数制御量変換テーブル５７１、周波数制御量取得部５７２、および、エラー未検出状態継続カウンタ５３４を備える。
【０１６９】
周波数制御量変換テーブル５７１は、第２エラー数と周波数制御量Δｆとを対応付けて記憶するものである。第２エラー数が許容値になるときの周波数が、最大動作周波数ｆmaxとして予め定められる。第２エラー数と周波数との間の関係に基づいて、第２エラー数ごとに、それらに対応する各周波数を最大動作周波数ｆmaxに制御するための周波数制御量Δｆが周波数制御量変換テーブル５７１に格納される。
【０１７０】
周波数制御量取得部５７２は、第１エラー数および第２エラー数に基づいて、周波数制御量Δｆを取得するものである。具体的には、周波数制御量取得部５７２は、第１エラーの発生率が第１の閾値より大きければ、クロック周波数を緊急低下させるなど、システムエラーを回避するための処理を実行する。第１エラーの発生率が第１の閾値以下であれば、周波数制御量取得部５７２は、エラー未検出の状態が一定期間、継続しているか否かを判断する。
【０１７１】
エラー未検出の状態が一定期間、継続していない場合、周波数制御量取得部５７２は、第２エラー数に対応する周波数制御量Δｆを周波数制御量変換テーブル５７１から取得してクロック生成回路１１３へ出力する。
【０１７２】
一方、エラー未検出の状態が一定期間、継続していた場合、周波数制御量取得部５７２は、周波数を所定周波数、増加するための周波数制御量Δｆを出力する。
【０１７３】
第４の実施の形態のエラー未検出状態継続カウンタ５３４の構成は、第１の実施の形態のエラー未検出状態継続カウンタ５３４と同様の構成である。
【０１７４】
［情報処理装置の動作］
図３４を参照して、本発明の第４の実施の形態における情報処理装置１０３の動作について説明する。図３４は、本発明の第４の実施の形態における周波数制御量取得処理の一例を示すフローチャートである。
【０１７５】
周波数制御量取得部５７２は、計数された第１エラー数が０であるか否かを判断する（ステップＳ９５１）。第１エラー数が０でない場合（ステップＳ９５１：Ｎｏ）、周波数制御量取得部５７２は、エラー未検出状態継続カウンタ５３４をリセットする。また、周波数制御量取得部５７２は、周波数制御量Δｆmaxを出力して動作周波数を低下させる（ステップＳ９５２）。
【０１７６】
第１エラー数が０である場合（ステップＳ９５１：Ｙｅｓ）、周波数制御量取得部５７２は、第２エラーが未検出であり、かつ、エラー未検出状態継続フラグが１であるか否かを判断する（ステップＳ９５３）。
【０１７７】
第２エラーが検出された場合、または、エラー未検出状態継続フラグが０である場合（ステップＳ９５３：Ｎｏ）、周波数制御量取得部５７２は、第２エラー数に対応する値を周波数制御量変換テーブル５７１から読み出す。周波数制御量取得部５７２は、読み出した値をΔｆとして出力する（ステップＳ９５４）。
【０１７８】
第２エラーが未検出であり、かつ、エラー未検出状態継続フラグが１である場合（ステップＳ９５３：Ｙｅｓ）、周波数制御量取得部５７２は、動作周波数を所定周波数、増加させるための周波数制御量Δｆを出力する（ステップＳ９５５）。
【０１７９】
ステップＳ９５４またはＳ９５５の後、周波数制御量取得部５７２は、エラー未検出状態継続判断処理を実行する（ステップＳ９４０）。第４の実施の形態のエラー未検出状態継続判断処理は、第１の実施の形態のエラー未検出状態継続判断処理と同様である。ステップＳ９５２またはＳ９４０の後、周波数制御量取得部５７２は、周波数制御量取得処理を終了する。
【０１８０】
図３５を参照して、周波数とエラー発生率との間の関係について説明する。図３５は、本発明の第４の実施の形態における遷移頻度と周期内遷移時刻との間の関係を示すグラフである。図３５において、縦軸はデータの遷移頻度であり、横軸は周期内遷移時刻である。周期内遷移時刻は、クロック信号に同期して演算が実行された場合に、そのクロック信号の周期内においてデータが遷移した時刻である。言い換えれば、周期内遷移時刻は、クロック信号の遷移タイミングに対して、データの遷移が遅延した時間である。遷移頻度は、複数回の演算をデータに対して実行して、各演算において、そのデータが遷移した時刻（すなわち、周期内遷移時刻）を測定し、時刻ごとの遷移回数を演算回数で除算した値である。例えば、１０００回の演算を行い、そのうち、周期内遷移時刻９においてデータが遷移した回数が１０回であった場合、周期内遷移時刻９における遷移頻度は、０．０１となる。
【０１８１】
グラフにおいて「×」は、演算結果の１６ビットのデータの遷移頻度をプロットしたものである。「△」は、１６ビットのデータから生成された第１パリティビットの遷移頻度をプロットしたものである。「○」は、第１パリティビットから生成された第２パリティビットの遷移頻度をプロットしたものである。
【０１８２】
図３５に示すように、データ（「×」）の遷移タイミングに対して、そのデータから生成される第１パリティビット（「△」）の遷移タイミングは遅延している。第１パリティビット（「△」）の遷移タイミングに対して、その第１パリティビットから生成される第２パリティビット（「○」）の遷移タイミングはさらに遅延する。
【０１８３】
動作周波数を速くしていくと、遅延時間が最も大きい第２パリティビットの遷移が間に合わなくなり、第２エラーの発生率が高くなる。図３５においては、周期内遷移時刻「２５」において第２パリティビットの遷移頻度が０であるが、周期内遷移時刻「２６」では、遷移頻度が０より大きくなる。このため、周期内遷移時刻「２５」に対応する周期になるまで周波数を増加すると、第２エラーが発生し始める。周波数を増加していくと、第２エラー数は周波数の増加に伴いさらに増加し、第１エラーの発生確率も増大していく。例えば、周期内遷移時刻「２１」においては、第１パリティビットの遷移頻度が０より大きくなっている。このため、周期内遷移時刻「２１」に対応する周期になるまで周波数を増加していくと、第１エラーが発生し始める。
【０１８４】
上述の関係に基づいて、第２エラー数が許容値になるときの周波数を最大動作周波数ｆmaxとして、第２エラー数ごとに、それらに対応する各周波数を最大動作周波数ｆmaxに制御するための周波数制御量Δｆが求められる。
【０１８５】
このように、本発明の第４の実施の形態によれば、情報処理装置１０３は、第１エラーの発生率が第１の閾値以下であるときに、第２の閾値を第２エラーの発生率の目標値として周波数を制御する周波数制御量を出力する。この構成によれば、第１パリティビットを使用した検査により検出できないタイミング違反性エラーを、第２パリティビットを使用して検出することできる。したがって、第２パリティビットにより検出された第２エラーの発生率を第２の閾値にするための周波数制御量を出力することにより、タイミング違反性エラーの発生を防止することができる。情報処理装置１０３は、ＥＤＳおよびＴＲＣやＴＤ回路のように、特殊なフリップフロップを備える必要がない。このため、情報処理装置１０３は、回路規模が比較的小さくて済む。また、情報処理装置１０３は、タイミング違反性エラーに加えて、タイミング違反性エラー以外のエラーも第１パリティビットから検出できる。したがって、誤動作が生じない正確な周波数を容易に設定することができる。
【０１８６】
なお、周波数と第２エラーの発生率との間に指数関係が観察される回路の場合、第１の実施の形態と同様に、対数演算部を設けて、第２エラー数の対数に対応する周波数制御量を変換テーブルから読み出す構成とすることもできる。
【０１８７】
また、第１乃至第４の実施の形態においては、第１エラー数の許容値を０にしているが、０より大きな値を許容値に設定してもよいのは勿論である。例えば、図３４のステップＳ９５１において、周波数制御量取得部５７２は、第１エラー数がＥＲＲ＿ＬＩＭＩＴ（ＥＲＲ＿ＬＩＭＩＴは０より大きい整数）以下であるか否かを判断してもよい。
【０１８８】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１８９】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【０１９０】
１００、１０３  情報処理装置
１１０、１１３  クロック生成回路
２１０、２２０  パイプラインレジスタ
３１０  演算器
４１０  パリティ生成部
４２０  第１パリティ生成部
４２１〜４２４、４３１、４６１〜４６８、４７１、４７２  ＸＯＲゲート
４３０  第２パリティ生成部
４５０  パリティ検査部
４６０  第１パリティ検査部
４６９  ＯＲゲート
４７０  第２パリティ検査部
５００、５０１、５０２、５０３  制御量出力部
５１０  エラー計数部
５１１  第１エラーカウンタ
５１２  第２エラーカウンタ
５２０、５６０  タイムスライス制御部
５２１  ダウンカウンタ
５２２  スライス開始フラグ生成部
５２３  電圧制御フラグ生成部
５３０、５４０、５５０  制御量演算部
５３１  電圧制御量変換テーブル
５３２  対数演算部
５３３、５４１、５５１  電圧制御量取得部
５３４  エラー未検出状態継続カウンタ
５４２  第１上限値記憶部
５５２  第２上限値記憶部
５６１  周波数制御フラグ生成部
５７０  周波数制御量出力部
５７１  周波数制御量変換テーブル
５７２  周波数制御量取得部
７００  電源装置
７１０  ステートマシン
７２０、７４０  切替器
７３０  加算器
７５０  電圧指標値レジスタ
７６０  電源回路
【図１】
0005712732.tif 000002
【図２】
0005712732.tif 000003
【図３】
0005712732.tif 000004
【図４】
0005712732.tif 000005
【図５】
0005712732.tif 000006
【図６】
0005712732.tif 000007
【図７】
0005712732.tif 000008
【図８】
0005712732.tif 000009
【図９】
0005712732.tif 000010
【図１０】
0005712732.tif 000011
【図１１】
0005712732.tif 000012
【図１２】
0005712732.tif 000013
【図１３】
0005712732.tif 000014
【図１４】
0005712732.tif 000015
【図１５】
0005712732.tif 000016
【図１６】
0005712732.tif 000017
【図１７】
0005712732.tif 000018
【図１８】
0005712732.tif 000019
【図１９】
0005712732.tif 000020
【図２０】
0005712732.tif 000021
【図２１】
0005712732.tif 000022
【図２２】
0005712732.tif 000023
【図２３】
0005712732.tif 000024
【図２４】
0005712732.tif 000025
【図２５】
0005712732.tif 000026
【図２６】
0005712732.tif 000027
【図２７】
0005712732.tif 000028
【図２８】
0005712732.tif 000029
【図２９】
0005712732.tif 000030
【図３０】
0005712732.tif 000031
【図３１】
0005712732.tif 000032
【図３２】
0005712732.tif 000033
【図３３】
0005712732.tif 000034
【図３４】
0005712732.tif 000035
【図３５】
0005712732.tif 000036