(57)【要約】      （修正有）【課題】命令発行部から発行された命令が登録される記憶部のエントリ毎の動作を停止させることで、情報処理装置の性能低下を抑えつつ、消費電力を低減する。【解決手段】個別に動作停止が可能な複数のエントリを有する記憶部と、前記エントリに保持されたフラグに基づいて、前記エントリの動作を停止させるエントリ制御部とを有する。記憶部は、リオーダバッファやリザベーションステーションとして構成される。【選択図】  図１
2007200213.tif 000002
【特許請求の範囲】
【請求項１】
個別に動作停止が可能な複数のエントリを有する記憶部と、
前記エントリの動作を停止させるエントリ制御部とを有することを特徴とする情報処理装置。
【請求項２】
前記複数のエントリはそれぞれ、エントリの動作の要否を示す情報を保持し、
前記エントリ制御部は、当該情報がエントリの動作停止を示している場合に、当該エントリの動作を停止させることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記エントリ制御部は、
前記記憶部の使用状況に関する情報を採取する使用状況監視部と、
前記使用状況監視部が採取した前記使用状況に関する情報に基づいて動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を設定するエントリ数計算部とを有することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記エントリ制御部は、
動作モード値を保持する動作モード値保持部と、
前記動作モード値それぞれに対応するエントリの削減率を示す削減率テーブルを保持する削減率テーブル保持部と、
前記動作モード値に対応する削減率を前記削減率テーブルから選択し、当該削減率に基づいて動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を設定するエントリ数計算部とを有することを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記エントリ制御部は、
動作モード値を保持する動作モード値保持部と、
前記動作モード値それぞれに対応するエントリの削減率を示す削減率テーブルを保持する前記削減率テーブル保持部と、
前記記憶部の使用状況に関する情報を採取する前記使用状況監視部と、
前記動作モード値に対応する削減率を前記削減率テーブルから選択し、前記バッファが有するエントリ数から当該削減率に相当するエントリ数を除いたエントリ数を算出し、当該エントリ数を前記使用状況監視部が採取した前記使用状況に関する情報に基づいて補正することにより、動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を設定するエントリ数計算部とを有することを特徴とする請求項２記載の情報処理装置。
【請求項６】
前記記憶部に対して命令を登録する命令発行部と、
前記エントリ数計算部が計算した動作エントリ数と前記記憶部における有効命令数とを比較し、有効命令数が動作エントリ数以上である場合に、前記命令発行部に対して命令発行停止信号を通知し、前記命令発行部による新たな命令登録を停止させる制御部とを有することを特徴とする請求項１乃至５いずれか１項記載の情報処理装置。
【請求項７】
前記エントリ制御部は、
前記記憶部のエントリに対するクロック供給を停止し、エントリの動作を停止させるクロック制御部を有することを特徴とする請求項１乃至６いずれか１項記載の情報処理装置。
【請求項８】
前記クロック制御部は、
動作を停止させるべきエントリを判定する判定部と、
前記判定部による判定結果に応じて、該当するエントリへのクロック供給を停止するクロック供給部とを有することを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記クロック制御部は、
エントリでの障害発生を検出する障害検出部を有し、
前記クロック制御部は、前記障害検出部により障害の発生が検出されたエントリへのクロック供給を停止し、当該エントリの動作を停止させることを特徴とする請求項７又は８いずれか１項記載の情報処理装置。
【請求項１０】
記憶部における個別に動作停止が可能な複数のエントリについて、エントリの動作の要否を示す情報を設定するステップと、
当該情報がエントリの動作停止を示している場合に、当該エントリの動作を停止させるステップとを有することを特徴とするエントリ構成制御方法。
【請求項１１】
前記記憶部の使用状況に関する情報を採取するステップを更に有し、
前記エントリの動作の要否を示す情報を設定するステップは、
前記使用状況に関する情報に基づいて動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を設定するステップであることを特徴とする請求項１０記載のエントリ構成制御方法。
【請求項１２】
動作モード値に対応する削減率を決定するステップを更に有し、
前記エントリの動作の要否を示す情報を設定するステップは、
前記削減率に基づいて動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を設定するステップであることを特徴とする請求項１０記載のエントリ構成制御方法。
【請求項１３】
前記エントリの動作を停止させるステップは、
エントリへのクロック供給を停止するステップを含むことを特徴とする請求項１０乃至１２いずれか１項記載のエントリ構成制御方法。
【請求項１４】
前記エントリへのクロック供給を停止するステップは、
動作を停止させるべきエントリを判定するステップを含むことを特徴とする請求項１３記載のエントリ構成制御方法。
【請求項１５】
エントリでの障害発生を検出するステップを更に有し、
前記エントリへのクロック供給を停止するステップは、
障害発生が検出されたエントリへのクロック供給を停止するステップであることを特徴とする請求項１３又は１４いずれか１項記載のエントリ構成制御方法。
【請求項１６】
コンピュータに、
記憶部における個別に動作停止が可能な複数のエントリについて、エントリの動作の要否を示す情報を設定する処理と、
当該情報がエントリの動作停止を示している場合に、当該エントリの動作を停止させる処理とを実行させることを特徴とするプログラム。
【請求項１７】
コンピュータに、
前記記憶部の使用状況に関する情報を採取する処理を更に実行させ、
前記エントリの動作の要否を示す情報を設定する処理は、
前記使用状況に関する情報に基づいて動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を変更する処理であることを特徴とする請求項１６記載のプログラム。
【請求項１８】
コンピュータに、
動作モード値に対応する削減率を決定する処理を更に実行させ、
前記エントリの動作の要否を示す情報を設定する処理は、
前記削減率に基づいて動作エントリ数を計算し、前記記憶部が有するエントリ数と当該動作エントリ数の差に相当する数のエントリについて、動作停止を示すように前記情報を設定する処理であることを特徴とする請求項１６記載のプログラム。
【請求項１９】
前記エントリの動作を停止させる処理は、
エントリへのクロック供給を停止する処理を含むことを特徴とする請求項１６乃至１８いずれか１項記載のプログラム。
【請求項２０】
前記エントリへのクロック供給を停止する処理は、
動作を停止させるべきエントリを判定する処理を含むことを特徴とする請求項１９記載のプログラム。
【請求項２１】
コンピュータに、
エントリでの障害発生を検出する処理を更に実行させ、
前記エントリへのクロック供給を停止する処理は、
障害発生が検出されたエントリへのクロック供給を停止する処理であることを特徴とする請求項１９又は２０いずれか１項記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、個別に動作停止が可能な複数のエントリを備えた記憶部を有する情報処理装置に関し、当該複数のエントリについて、各エントリ毎の動作を停止する情報処理装置に関する。
【背景技術】
【０００２】
従来、情報処理装置における演算器の動作を停止させ、情報処理装置の消費電力の低減を図っていた。
【０００３】
特許文献１には、情報処理装置の演算器へのクロック供給を停止することで当該演算器の動作を停止し、情報処理装置の消費電力を低減するという技術が開示されている。
【０００４】
【特許文献１】特開２０００−４７８７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の技術によると、情報処理装置の機能中枢たる演算器自体の動作を停止させるため、情報処理装置の性能が低下するという問題がある。
【０００６】
本発明の目的は、命令発行部から発行された命令を登録する記憶部における複数のエントリについて、各エントリ毎の動作を停止させることで、情報処理装置の性能を低下させることなく消費電力を低減できる情報処理装置、エントリ構成制御方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、個別に動作停止が可能な複数のエントリを有する記憶部と、前記エントリの動作を停止させるエントリ制御部とを有することを特徴とする。
【発明の効果】
【０００８】
このように、命令発行部から発行された命令が登録される記憶部のエントリ毎の動作を停止させることで、情報処理装置の性能低下を抑えつつ、消費電力を低減することができる。
【発明を実施するための最良の形態】
【０００９】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
（第一の実施形態）
図１を参照すると、本発明の第一の実施形態である情報処理装置１は、命令発行部１０と、記憶部２０と、制御部３０と、エントリ制御部４０とを含む。
【００１０】
命令発行部１０は、ＣＰＵがメモリから読み込んだ命令が，どんな命令であるかを解読し、解読した命令を記憶部２０に登録する。
【００１１】
記憶部２０は、命令発行部１０から発行された命令を一時的に登録する。発行可能となった命令は、記憶部２０から発行され、当該命令が演算器やメモリ等へ投入される。なお、記憶部２０は、命令をアウトオブオーダーで実行可能なＣＰＵに一般的に実装されるＲＯＢ（リーダバッファ）やＲＳ（リザベーションステーション）として構成することも可能である。
【００１２】
図１を参照すると、記憶部２０は複数のエントリ２０１を有している。図２を参照して、エントリ２０１の構成について説明する。各エントリ２０１は、命令発行部１０から発行された命令２０４と、有効命令フラグ２０２と、エントリ停止フラグ２０３とを有する。
【００１３】
有効命令フラグ２０２は、記憶部２０のエントリ２０１に登録されている命令が未発行であり、命令発行を待っている状態であるか否かを判断するためのフラグである。有効命令フラグ２０２がオンとなっている場合、エントリ２０１には未発行の命令２０４が登録されていることを意味する。有効命令フラグ２０２がオフとなっている場合、エントリ２０１には命令２０４は登録されていないことを意味する。
【００１４】
エントリ停止フラグ２０３は、エントリ２０１の動作を停止するべきか否かを判断するためのフラグである。エントリ停止フラグ２０３がオンとなっている場合、エントリ２０１の動作を停止させることを意味する。エントリ停止フラグ２０３がオフとなっている場合、エントリ２０１を継続して動作させることを意味する。
【００１５】
有効命令フラグ２０２がオフであり、エントリ２０１に命令２０４が登録されておらず、かつ、エントリ停止フラグ２０３がオンである場合に、当該エントリ２０１の動作を停止させることが可能となる。エントリ停止フラグ２０３がオンであっても、有効命令フラグ２０２がオンであって、エントリ２０１に未発行の命令２０４が登録されている場合には、当該エントリ２０１の動作を停止させることはできない。
【００１６】
なお、有効命令フラグ２０２及びエントリ停止フラグ２０３は、１ビットの２進数を用いるように構成してもよい。この場合、例えば、有効命令フラグ２０２及びエントリ停止フラグ２０３が“１”である場合、これらのフラグがオンであることを意味し、“０”である場合、これらのフラグがオフであることを意味するように構成してもよい。
【００１７】
エントリ制御部４０は、記憶部２０の複数のエントリ２０１のうち、動作を停止することができるエントリを決定し、エントリの動作を停止する。
【００１８】
図３（ａ）を参照すると、エントリ制御部４０は、削減率テーブル保持部４２と、エントリ数計算部４３と、動作モード値保持部４４と、クロック制御部４５とを有する。
【００１９】
動作モード値保持部４４は、動作モード値を保持する。また、削減率テーブル保持部４２は、動作モード値毎に、当該値に対応するエントリの削減率を示した削減率テーブル４２０を保持する。削減率テーブル４２０の構成例を図４（a）に示す。図４（a）に示すように、各動作モード値毎に、対応するエントリの削減率が削減率テーブル４２０に定められている。
【００２０】
なお、動作モード値と削減率の対応は図４（a）に記載された関係に限られず、各動作モード値に対応する削減率を自由に定めることも可能であるし、動作モード値を増やし、より詳細に削減率を定めることも可能である。
【００２１】
また、各動作モード値に対応する削減率を適宜変更可能とするため、削減率テーブル４２０を更新可能とするように構成してもよい。
【００２２】
次に図５を参照して、動作モード値の設定手順を説明する。
【００２３】
図５（a）に示すように、命令発行部１０から記憶部２０のエントリ２０１へ動作モード値変更命令を登録し、当該命令を発行することで、動作モード値保持部４２が動作モード値を変更するように構成してもよい。
【００２４】
図５（ｂ）に示すように、動作モード値変更スイッチ４２１により、新たな動作モード値を動作モード値保持部４２へ通知し、動作モード値保持部４２が動作モード値を変更するように構成してもよい。
【００２５】
図５（ｃ）に示すように、温度センサー４２２により、動作モード値保持部４２が動作モード値を変更するように構成してもよい。温度センサー４２２が情報処理装置の温度を検出し、動作モード値保持部４２へ出力する。動作モード値保持部４２は、当該出力をデコードして情報処理装置の温度を検知する。動作モード値保持部４２は、検知した温度に応じて動作モード値を更新するように構成してもよい。例えば、動作モード値保持部４２が情報処理装置の基準温度を有し、温度センサー４２２からの出力をデコードすることで検知した情報処理装置の温度が、当該基準温度から１℃上昇する毎に、エントリの削減率を増加するように動作モード値を変更すればよい。
【００２６】
以上の動作により、動作モード値保持部４２へ動作モード値が設定される。なお、動作モード値は一度設定されたらその値に固定されるものではなく、情報処理装置の稼動中に、上記動作により動作モード値が逐次更新されるように構成することも可能である。
【００２７】
エントリ数計算部４３は、記憶部２０のエントリ２０１を再構成するため、新たな動作エントリ数を計算する。動作エントリ数とは、記憶部２０が有する複数のエントリ２０１のうち、動作させるエントリ２０１の数をいう。例えば、記憶部２０が１０個のエントリ２０１を有しており、そのうちの５個が動作させる場合、動作エントリ数は５となる。
【００２８】
エントリ数計算部４３は、計算した動作エントリ数を制御部３０に通知する。また、記憶部２０が有するエントリ数から、計算した動作エントリ数を引いた数のエントリ２０１のエントリ停止フラグ２０３をオンにする。各エントリ２０１に番号を付して、最も若い番号のエントリ２０１のエントリ停止フラグ２０３から順にオンとするようにしてもよい。また、有効命令フラグがオフとなっており、命令２０４が登録されていないエントリ２０１から優先してエントリ停止フラグをオンにし、有効命令フラグがオフであるエントリ２０１全てのエントリ停止フラグをオンにした後は、エントリ２０１の番号の若い順にエントリ停止フラグ２０３をオンにしてもよい。
【００２９】
なお、エントリ停止フラグ２０３がオンとなっているエントリ２０１の数が、記憶部２０が有するエントリ数から、新たに計算した動作エントリ数を引いた数よりも大きい場合が考えられる。この場合は、エントリ停止フラグ２０３がオンとなっているエントリの数から、記憶部２０が有するエントリ数より新たに計算した動作エントリ数を引いた数を差し引いた数のエントリ２０１のエントリ停止フラグ２０３をオフにするように構成すればよい。具体例として、記憶部２０のエントリ数が６であり、そのうち４つのエントリについてエントリ停止フラグ２０３がオンとなっている場合を説明する。この場合において、エントリ数計算部４３が新たに計算した動作エントリ数が４となった場合、４−（６−４）＝２となるので、エントリ数計算部４３はエントリ停止フラグ２０３がオンとなっているエントリのうち、２つのエントリのエントリ停止フラグ２０３をオフにする。
【００３０】
また、エントリ停止フラグ２０３がオンとなっているエントリ２０１の数と、記憶部２０が有するエントリ数から、新たに計算した動作エントリ数を引いた数が等しい場合は、エントリ数計算部４３は、エントリ停止フラグ２０３をオンにはしない。
【００３１】
新しい動作エントリ数の計算には、動作モード値と削減率テーブル４２０を用いる。エントリ数計算部４３は、削減率テーブル４２０から、動作モード値保持部４２が保持する動作モード値に対応する削減率を取得する。記憶部２０の最大のエントリ数をMとし、エントリ数計算部４３が削減率テーブル４２０から取得した削減率（％）をｘとすると、新しい動作エントリ数は、M（１−ｘ／１００）という式により算出される。算出した動作エントリ数が１以下となる場合は、動作エントリ数は１として算出する。情報処理装置の動作を維持するため、最低限のエントリ数を確保するためである。このように、最低限１個のエントリを残して動作せることで、消費電力削減効果が最大で情報処理装置としての最低限の機能は確保できるという効果が得られる。
【００３２】
具体例を図４（ａ）及び（ｂ）を用いて説明する。図４（ｂ）のパターン１では、記憶部２０の最大エントリ数が４８であるので、Ｍ＝４８となる。動作モード値が３であるので、図４（a）の削減率テーブル４２０から、削減率は５０％となる。よって、新しい動作エントリ数は、上式から２４となる。同様の計算により、図４（ｂ）のパターン２では、新しい動作エントリ数は３６となる。図４（ｂ）のパターン３の場合、上式により計算すると、新しい動作エントリ数は２．４となる。この場合、エントリ数計算部４３は新しい動作エントリ数を２若しくは３と計算する。つまり、情報処理装置の性能を重視する場合には端数を切り上げて３を新しい動作エントリ数とし、消費電力の削減を重視する場合には端数を切り下げて２を新しい動作エントリ数とする。また、パターン３のように端数が出た場合には、四捨五入により新しい動作エントリ数を計算してもよい。
【００３３】
エントリ制御部４０は、図３（ｂ）に示すように、図３（ａ）の構成に対して使用状況監視部４１をさらに有するように構成してもよい。使用状況監視部４１は、記憶部２０と接続されている。
【００３４】
使用状況監視部４１は、記憶部２０の使用状況を監視する。具体的には、予め設定された期間毎（例えば、１００クロックサイクル毎等）の記憶部２０への命令登録数又は記憶部２０からの命令発行数を監視し、記憶部２０の使用状況として記憶部２０の使用率を算出する。なお、使用状況監視部４１は、設定された期間毎に記憶部２０の使用状況を監視するが、当該期間は設定変更が可能なように構成することもできる。
【００３５】
使用率は次のように算出する。使用状況監視部４１は予め設定された期間毎に記憶部２０を監視するが、当該期間における命令登録数又は命令発行数の基準値を使用状況監視部４１に設定しておく。当該期間に、基準値と同じ数の命令登録又は命令発行が行われた場合、記憶部２０の使用率は１００％となる。よって、記憶部２０の使用率は、（設定された期間の命令登録数又は命令発行数／基準値）×１００（％）という式により算出される。
使用状況監視部４１は、算出した使用率をエントリ数計算部４３に通知する。エントリ数計算部４３は、動作モード値と削減率テーブル４２０を用いて算出した動作エントリ数に対して、使用率をさらに乗算して動作エントリ数を算出する。つまり、動作エントリ数は、記憶部２０の最大のエントリ数をM、削減率（％）をｘ、使用率（％）をｙとすると、Ｍ（１−ｘ／１００）×ｙ／１００という式により算出される。計算の結果、動作エントリ数が１以下となった場合には、動作エントリ数は１として算出する。記憶部２０のエントリを全て停止してしまうと、情報処理装置としての動作ができなくなるので、最低限のエントリ数を確保するためである。
図６（ａ）を参照して、具体例を説明する。記憶部２０の最大エントリ数が４８、動作モード値が３であり、図４（ａ）の削減率テーブル４２０から当該動作モード値に対応する削減率は５０％となる。また、記憶部２０の使用率は３０％であるため、上記計算式より、４８×（１−５０／１００）×３０／１００＝７．２が新たな動作エントリ数として算出される。新たな動作エントリ数として端数が出るので、情報処理装置の性能を重視する場合には端数を切り上げて８を新しい動作エントリ数とし、消費電力の削減を重視する場合には端数を切り下げて７を新しい動作エントリ数とする。また、四捨五入により新しい動作エントリ数を計算してもよい。
使用状況監視部４１が算出した使用率から、使用頻度を定めて、当該使用頻度に基づいて新たな動作エントリ数を算出するように構成してもよい。この場合、例えば、算出された使用率が０％〜３０％の範囲にある場合には使用頻度が「低い」と判断し、使用率が３０％〜６０％の範囲にある場合には使用頻度が「中間」と判断し、使用率が６０％〜１００％の範囲にある場合には使用頻度が「高い」と判断すればよい。なお、使用率と使用頻度の対応は、上記の関係に限るものではなく、自由に定めることができる。動作モード値と削減率テーブル４２０から算出した動作エントリ数に対して、使用頻度に応じた定数を乗算することで新たな動作エントリ数を算出する。例えば、使用頻度が「低い」の場合には定数を０．２、「中間」の場合には０．５、「高い」の場合には０．８とすればよい。なお、使用頻度に応じた定数はこの限りではなく、自由に定めることが可能である。具体例を図６（ｂ）を参照して説明する。パターン１は、使用頻度が「低い」と判断された場合である。この場合、４８×（１−５０／１００）により算出した動作エントリ数に対して、使用頻度に応じた定数（パターン１では０．２）を乗算し、新たな動作エントリ数が４．８と算出される。新たな動作エントリ数として端数が出るので、情報処理装置の性能を重視する場合には端数を切り上げて５を新しい動作エントリ数とし、消費電力の削減を重視する場合には端数を切り下げて４を新しい動作エントリ数とする。また、四捨五入により新しい動作エントリ数を計算してもよい。パターン２及び３は、使用頻度が「中間」の場合の定数として０．５、使用頻度が「高い」の場合の定数として０．８をそれぞれ用いて、パターン１と同様に新たな動作エントリ数を算出している。
なお、エントリ制御部４０に、削減率テーブル保持部４２と動作モード値保持部４４を設けずに、使用状況監視部４１により算出した記憶部２０の使用率のみに基づいて、エントリ数計算部４３が新たな動作エントリ数を算出するように構成してもよい。この場合、記憶部２０の最大エントリ数をＭ、使用率（％）をｙとすると、新たな動作エントリ数は、Ｍ×ｙ／１００により算出される。
【００３６】
エントリ制御部４０は、図３（ｃ）又は（ｄ）に示すように、図３（ａ）の構成に対して分岐予測失敗数監視部４６又はキャッシュミス数監視部４７をさらに有するように構成してもよい。
【００３７】
分岐予測失敗数監視部４６は、予め分岐予測失敗数監視部４６に設定された期間における命令の分岐予測失敗数をカウントする。パイプライン処理を行なう情報処理装置は、いくつもの命令を流れ作業的に同時に実行するため、分岐命令でメモリ内の別の部分にジャンプしてしまうと、処理を開始した後続の命令をすべて破棄しなくてはならず、処理効率が低下する。これを防ぐため、命令が分岐するかを予測し、分岐しそうな場合は分岐先の命令をパイプラインに流しこむのが分岐予測である。分岐予測失敗数監視部４６は、当該分岐予測が失敗した数をカウントし、失敗率を算出する。分岐予測失敗数監視部４６は予め設定された期間毎の分岐予測の失敗数を監視するが、当該期間における分岐予測の回数も共にカウントし、(分岐予測の失敗数／分岐予測の回数）×１００（％）という式により失敗率を算出する。記憶部２０の最大エントリ数をＭ、削減率をｘ、失敗率をＦとすると、新たな動作エントリ数は、Ｍ（１−ｘ／１００）×（１−Ｆ／１００）という式により算出される。なお、エントリ制御部４０に、削減率テーブル保持部４２と動作モード値保持部４４を設けずに、分岐予測失敗数監視部４６により算出した失敗率のみに基づいて、エントリ数計算部４３が新たな動作エントリ数を算出するように構成してもよい。この場合、記憶部２０の最大エントリ数をＭ、失敗率（％）をＦとすると、新たな動作エントリ数は、Ｍ×（１―Ｆ／１００）という式により算出される。
このように新たな動作エントリ数を算出することにより、失敗率が高く分岐予測失敗による命令の再実行が多い場合に、記憶部２０の動作エントリ数を削減し、命令処理の効率を高めつつ消費電力の低減を図ることができるという効果が得られる。
キャッシュミス数監視部４７は、予めキャッシュミス数監視部４７に設定された期間におけるキャッシュミスの発生回数をカウントし、キャッシュミス率を算出する。キャッシュミス数監視部４７は予め設定された期間毎のキャッシュミスの発生回数を監視するが、当該期間におけるキャッシュアクセスの回数も共にカウントし、(キャッシュミスの発生回数／キャッシュアクセスの回数）×１００（％）という式によりキャッシュミス率を算出する。記憶部２０の最大エントリ数をＭ、削減率（％）をｘ、キャッシュミス率（％）をＣとすると、新たな動作エントリ数は、Ｍ（１−ｘ／１００）×（１−Ｃ／１００）という式により算出される。なお、エントリ制御部４０に、削減率テーブル保持部４２と動作モード値保持部４４を設けずに、キャッシュミス数監視部４７により算出したキャッシュミス率のみに基づいて、エントリ数計算部４３が新たな動作エントリ数を算出するように構成してもよい。この場合、記憶部２０の最大エントリ数をＭ、キャッシュミス率（％）をＣとすると、新たな動作エントリ数は、Ｍ×（１−Ｃ／１００）という式により算出される。
このように新たな動作エントリ数を算出することにより、キャッシュミス率が高く、メインメモリからのリプライ待ちが多い場合に、記憶部１０の動作エントリ数を削減し、命令処理の効率を高めつつ消費電力の低減を図ることができるという効果が得られる。
クロック制御部４５は、エントリ２０１の有効命令フラグ２０２及びエントリ停止フラグ２０３の状態を監視し、未使用のエントリ２０１へのクロック供給を停止することで、エントリ２０１の動作を停止させる。
図７を参照すると、クロック制御部４５は、判定部４５１とクロック供給部４５２とを有する。クロック制御部４５は、記憶部２０が有するエントリ２０１の数と同じ数の判定部４５１を有する。
判定部４５１は、記憶部２０における１つのエントリ２０１と接続され、有効命令フラグ２０２及びエントリ停止フラグ２０３の状態を監視する。判定部４５１は、有効命令フラグ２０２及びエントリ停止フラグ２０３から、エントリ２０１が未使用であるか否かを判定する。具体的には、有効命令フラグ２０２がオフであり、エントリ２０１に命令が登録されておらず、かつ、エントリ停止フラグ２０３がオンとなっている場合に、当該エントリ２０１は未使用であり、クロック供給を停止させるべきと判定する。判定部４５１は、エントリ２０１が未使用であると判定した場合、クロック停止判定信号４５１０によりクロック供給部４５２に対して、当該エントリ２０１へのクロック供給を停止するように通知する。
クロック供給部４５２は、クロック停止判定信号４５１０により判定部４５１からクロック供給を停止するように通知を受けた場合、当該エントリ２０１へのクロック信号４５２０の供給を停止する。
図８に、判定部４５１の具体的な回路図を示す。なお、図８に示す回路図は具体例であり、判定部４５１の構成として図８の回路図に限定はされない。
図８では、有効命令フラグ２０２及びエントリ停止フラグ２０３が1ビットの２進数で表され、各フラグが“１”の場合がオンであり、“０”の場合がオフとして説明する。
判定部４５１は、ＮＯＴ回路とＡＮＤ回路とを有する。有効命令フラグ２０２の値がＮＯＴで反転されてＡＮＤ回路に入力される。エントリ停止フラグ２０３の値がそのままＡＮＤ回路に入力される。よって、有効命令フラグ２０２が“０”、すなわちエントリ２０１に命令２０４が登録されておらず、かつ、エントリ停止フラグ２０３が“１”の場合にのみ、ＡＮＤ回路の出力が“１”となる。ＡＮＤ回路の出力が、エントリ停止判定信号４５１０としてクロック供給部４５２に入力される。図８の例では、ＡＮＤ回路の出力が“１”の場合に、エントリ２０１へのクロック供給を停止することを示している。判定部４５１をこのように構成することにより、有効命令フラグ２０２がオフであり、かつ、エントリ停止フラグ２０３がオンであるエントリ２０１へのクロック供給を停止できる。
図９に、クロック供給部４５２の具体的な回路図を示す。なお、図９に示す回路図は具体例であり、クロック供給部４５２の構成として図９の回路図に限定はされない。
図９では、クロック停止判定信号４５１０が“１”の場合に、該当するエントリ２０１へのクロック供給を停止するものとして説明する。
各判定部４５１からのエントリ停止判定信号４５１０がクロック供給部４５２に入力される。また、クロック信号４５２０がクロック供給部４５２に入力される。エントリ停止判定信号４５１０からの入力は、ＮＯＴ回路により反転されて、各エントリ毎に設けられているＡＮＤ回路へ入力される。また、クロック信号４５２０はそのままＡＮＤ回路に入力され、ＡＮＤ回路を介してエントリ２０１へ入力される。よって、エントリ停止判定信号４５１０が“１”、すなわちエントリ２０１へのクロック供給を停止することを示している場合、ＡＮＤ回路の出力は常に“０”となり、エントリ２０１へのクロック供給を停止することができる。
クロック供給部４５２をこのように構成することで、判定部４５１によりクロック供給を停止すべきと判断されたエントリ２０１へのクロック供給のみを停止することが可能となる。
制御部３０は、エントリ数計算部４３から通知された記憶部２０の動作エントリ数を管理し、エントリ停止フラグ２０３がオンとなっているエントリ２０１へ命令発行部１０から命令２０４が登録されることを禁止するように制御する。
また、命令発行部１０から記憶部２０へ送られた命令を、記憶部２０内のどのエントリ２０１に登録するかを制御し、登録された命令の発行を制御する。
さらに、制御部３０は、エントリ数計算部４３から通知された新たな動作エントリ数と、記憶部２０の有効命令数とを比較して、有効命令数が新たな動作エントリ数以上である場合（有効命令数≧新たな動作エントリ数）、命令発行部１０に対して、命令発行停止信号を通知して新たな命令登録を停止させる。有効命令数とは、記憶部２０の各エントリ２０１に登録されている、未発行の命令数を意味する。命令発行停止信号を受けた命令発行部１０は、記憶部２０への命令発行を停止する。
新たな動作エントリ数が有効命令数よりも大きい場合（新たな動作エントリ数＞有効命令数）、命令発行停止信号は通知しない。また、既に命令発行停止信号が制御部３０から命令発行部１０に通知されている場合であって、新たな動作エントリ数が有効命令数よりも大きい場合には、制御部３０は命令発行停止信号を解除する。命令発行停止信号が解除されると、命令発行部１０は記憶部２０への命令発行を再開する。
図１０を参照して、命令発行停止信号の通知若しくは解除について説明する。図１０は記憶部２０が８個のエントリ２０１を有する場合の、各エントリ２０１の有効命令フラグ２０２及びエントリ停止フラグ２０３の状態遷移図である。図１０（ａ）では、動作エントリ数が８から４に変更され、エントリＮｏ０〜３のエントリ２０１のエントリ停止フラグ２０３がオンとなった状態である。この状態において、エントリＮｏ０〜６のエントリ２０１の有効命令フラグ２０２がオンとなっている。よって、有効命令数は７、新たな動作エントリ数は４であるので、有効命令数≧新たな動作エントリ数となり、制御部３０から命令発行部１０に対して命令発行停止信号が通知される。
その後、図１０（ｂ）に示すように、エントリＮｏ３及び４のエントリ２０１に登録されている命令２０４が発行され、エントリＮｏ３及び４のエントリ２０１における有効命令フラグ２０２がオフとなる。しかし、有効命令数は５であり、未だ有効命令数≧新たな動作エントリ数であるので、命令発行停止信号は解除されない。なお、本発明の情報処理装置においては、各エントリ２０１に登録されている命令２０４を、アウトオブオーダーで実行可能である。
その後、図１０（ｃ）に示すように、エントリＮｏ２及び５のエントリ２０１に登録されている命令２０４が発行され、エントリＮｏ２及び５のエントリ２０１における有効命令フラグ２０２がオフとなる。ここで、有効命令数が３となり、有効命令数＜動作エントリ数となるので、制御部３０は命令発行停止信号を解除したことを命令発行部１０に通知する。
【００３８】
このように、有効命令数≧新たな動作エントリ数の場合に制御部３０が命令発行部１０に命令発行停止信号を通知し、新たな命令登録を停止することで、命令発行部１０からの命令発行によりエントリ２０１に登録されている内容が上書きされることを回避できる。
【００３９】
なお、上記の説明において、記憶部２０が一つである場合を例として説明したが、記憶部２０が複数存在する構成であってもよい。エントリに登録する命令種（メモリアクセス系命令、整数演算系命令、浮動小数点演算系命令）に応じて、複数の記憶部２０が設けられることがある。この場合、制御部３０及びエントリ制御部４０を、複数の記憶部２０のそれぞれと接続するように構成される。エントリ制御部４０のエントリ数計算部４３は、複数の記憶部２０それぞれの動作エントリ数を個別に計算する。
【００４０】
このように構成することにより、エントリに登録される命令種に偏りがある場合でも、命令種毎の記憶部２０それぞれのエントリについて、個別に動作制御することが可能となり、効率的に消費電力を低減することが可能となる。
【００４１】
次に、本発明の第一の実施形態の動作を図１１のフローチャートを用いて説明する。
【００４２】
当該動作モード値と削減率テーブル４２０により、エントリ数計算部４３が動作エントリ数を計算する（S１０００）。また、エントリ数計算部４３は使用状況監視部４１、分岐予測失敗数監視部４６及びキャッシュミス数監視部４７によりそれぞれ算出された使用率、失敗率及びキャッシュミス率をさらに用いて、動作エントリ数を計算することも可能である。
【００４３】
記憶部２０が有するエントリ数から、動作エントリ数を引いた数のエントリ２０１のエントリ停止フラグ２０３をオンにする（Ｓ１００１）。
【００４４】
動作エントリ数を計算後、エントリ数計算部４３は、計算した動作エントリ数を制御部３０に通知する（S１００２）。
【００４５】
制御部３０は、エントリ数計算部４３から通知された新たな動作エントリ数と、記憶部２０のエントリ２０１中の有効命令数を比較する（S１００３）。
【００４６】
比較の結果、有効命令数≧新たな動作エントリ数である場合、制御部３０は命令発行部１０に対して命令発行停止信号を通知し、命令発行部１０から記憶部２０への命令登録を停止する（S１００４）。
【００４７】
その後、制御部３０の制御により記憶部２０のエントリ２０１に登録されている有効命令が発行され、併せてエントリ制御部４０のクロック制御部４５により見使用のエントリ２０１へのクロック供給が停止される（S１００５）。
【００４８】
制御部３０により、改めて有効命令数と新たな動作エントリ数とが比較される（S１００６）。有効命令数≧新たな動作エントリ数の場合、再度記憶部２０のエントリ２０１から有効命令が発行され、クロック制御部４５により未使用のエントリ２０１へのクロック供給が停止される。有効命令数＜新たな動作エントリ数となるまで当該動作を繰り返す。
【００４９】
有効命令数＜新たな動作エントリ数となった場合（S１００６でYeｓの場合）、制御部３０は命令発行停止信号を解除する（S１００７）。
【００５０】
エントリ停止フラグ２０３がオンとなっているエントリ２０１へのクロック供給を全て停止したかを確認する（S１００９）。クロック供給が未停止のエントリ２０１が存在する場合には（S１００９でNoの場合）、エントリ停止フラグ２０３がオンとなっているエントリ２０１全てに対するクロック供給が停止されるまで、クロック制御部４５による処理を繰り返す。
【００５１】
エントリ停止フラグ２０３がオンとなっているエントリ２０１全てに対するクロック供給が停止された場合（S１００９でYeｓの場合）、動作を終了する。
【００５２】
また、ステップS１００３で有効命令数＜新たな動作エントリ数と判断された場合には（S１００３でYeｓの場合）、制御部３０による命令発行停止信号の通知はされず、有効命令の発行と、未使用のエントリ２０１へのクロック供給の停止が実行される（S１００８）。エントリ停止フラグ２０３がオンとなっているエントリ２０１へのクロック供給が全て停止された場合（S１００９でYeｓの場合）、動作を終了する。
以上の動作を所定の期間毎に繰り返し、常に最適なエントリ構成で情報処理装置が動作できるようにする。
（第一の実施形態による効果）
本実施例の構成のように、未使用のエントリ２０１へのクロック供給を停止することで、当該エントリ２０１の動作を停止させることで、情報処理装置の性能に対する影響を最小限に抑えつつ、消費電力の低減・発熱の減少という効果が得られる。
【００５３】
また、記憶部２０のエントリ２０１の構成変更を、情報処理装置の動作を停止させず、かつ、低レイテンシー（低ロス時間）で行うことができるという効果も得られる。
（第二の実施形態）
次に、図１２を参照して、本発明の第二の実施形態について説明する。
【００５４】
図１２を参照すると、第二の実施形態におけるクロック制御部４５は、第一の実施形態の構成に対して、更に障害検出部４５３を有する。クロック制御部４５は、記憶部２０が有するエントリ２０１の数と同じ数の障害検出部４５３を有する。また、第二の実施形態における記憶部２０の各エントリ２０１に登録される命令２０４は、命令２０４のオペコード２０４１及びオペランド２０４３にそれぞれ対応するオペコードパリティ２０４２及びオペランドパリティ２０４４を有している。
【００５５】
障害検出部４５３は記憶部２０における１つのエントリ２０１と接続されており、各エントリ２０１に登録された命令２０４のオペコード２０４１及びオペランド２０４３についてパリティチェックを行うことで、各エントリ２０１の障害を検出し、障害を検出した場合に当該エントリ２０１のエントリ停止フラグ２０３をオンにする。
図１２の例では、オペコード２０４１及びオペランド２０４３はそれぞれ、８ビットの２進数で表現しているが、本発明のオペコード２０４１及びオペランド２０４３は８ビットに限られるわけではない。また、図１２の例ではオペコードパリティ２０４２及びオペランドパリティ２０４４は１ビットの２進数で表現しているが、１ビットに限られるわけではない。図１２の例では、偶数パリティによりパリティチェックを実行している。
【００５６】
図１２には、障害検出部４５３の具体例として回路図を示している。なお、図１２に示す回路図は具体例であり、障害検出部４５３の構成として図１２の回路図に限定はされない。
【００５７】
オペコード２０４１の各ビットとオペコードパリティ２０４２がＸＯＲ回路４５３１に入力される。つまり、図１２の例ではＸＯＲ回路４５３１へ１ビットの２進数が９つ入力されることになる。これらの入力のＸＯＲ（排他的論理和）をとることで、入力される“１”の数が奇数ならば、ＸＯＲ回路４５３１の出力は常に“１”となり、入力される“１”の数が偶数ならば、ＸＯＲ回路４５３１の出力は常に“０”となる。つまり、ＸＯＲ回路４５３１の出力が“１”の場合、パリティエラーが発生していることになる。
【００５８】
同様にオペランド２０４３の各ビットとオペコードパリティ２０４４がＸＯＲ回路４５３２に入力され、これらの入力のＸＯＲ（排他的論理和）がとられる。よって、入力される“１”の数が奇数ならば、ＸＯＲ回路４５３２の出力は常に“１”となり、入力される“１”の数が偶数ならば、ＸＯＲ回路４５３２の出力は常に“０”となる。つまり、ＸＯＲ回路４５３２の出力が“１”の場合、パリティエラーが発生していることになる。
【００５９】
ＸＯＲ回路４５３１及びＸＯＲ回路４５３２の出力を、それぞれＯＲ回路４５３３に入力し、ＯＲ（論理和）をとる。よって、ＯＲ回路４５３３の入力のいずれかが“１”であれば、ＯＲ回路４５３３の出力は常に“１”となる。よって、ＯＲ回路４５３３の出力が“１”である場合、オペコード２０４１若しくはオペランド２０４３のいずれかにパリティエラーが発生していることを検出できる。ＯＲ回路４５３３の出力を、エントリ停止フラグ２０３に反映させれば、エントリ２０１にパリティエラーが発生している場合に、エントリ停止フラグ２０３をオンにできる。
【００６０】
このような構成を採用することで、障害が発生しているエントリ２０１のエントリ停止フラグ２０３をオンにできるので、障害が発生したエントリ２０１へのクロック供給を停止して、当該エントリの動作を停止することができる。
（第二の実施形態による効果）
本実施例の構成のように、障害が発生したエントリ２０１のエントリ停止フラグ２０３をオンにすることで、障害が発生したエントリ２０１へのクロック供給を停止し、当該エントリの動作を停止することができる。よって、情報処理装置の消費電力を削減できるとともに、情報処理装置の耐故障性を向上できるという効果が得られる。
【図面の簡単な説明】
【００６１】
【図１】第一の実施形態における情報処理装置の構成を示すブロック図である。
【図２】エントリの構成を示す図である。
【図３】エントリ制御部の構成を示す図である。
【図４】削減率テーブルの構成、及び、削減率テーブルを用いて動作エントリ数を計算する場合の具体例を示す図である。
【図５】動作モード値保持部４２の構成を示す図である。
【図６】使用率を用いて動作エントリ数を計算する場合の具体例を示す図である。
【図７】クロック制御部の構成を示す図である。
【図８】判定部の構成の具体例を示す図である。
【図９】クロック供給部の構成の具体例を示す図である。
【図１０】制御部の動作の具体例を示す図である。
【図１１】第一の実施形態の動作を示すフローチャートである。
【図１２】第二の実施形態における障害検出部の構成を示す図である。
【符号の説明】
【００６２】
１  情報処理装置
１０  命令発行部
２０  記憶部
２０１  エントリ
２０２  有効命令フラグ
２０３  エントリ停止フラグ
２０４  命令
３０  制御部
４０  エントリ制御部
４１  使用状況監視部
４２  削減率テーブル保持部
４３  エントリ数計算部
４４  動作モード値保持部
４５  クロック制御部
４５１  判定部
４５２  クロック供給部
４５３  障害検出部
４５３１  ＸＯＲ回路
４５３２  ＸＯＲ回路
４５３３  ＯＲ回路
４５１０  クロック停止判定信号
４５２０  クロック信号
４６  分岐予測失敗数監視部
４７  キャッシュミス数監視部
４２０  削減率テーブル
４２１  動作モード値変更スイッチ
４２２  温度センサー
【図１】
2007200213.tif 000003
【図２】
2007200213.tif 000004
【図３】
2007200213.tif 000005
【図４】
2007200213.tif 000006
【図５】
2007200213.tif 000007
【図６】
2007200213.tif 000008
【図７】
2007200213.tif 000009
【図８】
2007200213.tif 000010
【図９】
2007200213.tif 000011
【図１０】
2007200213.tif 000012
【図１１】
2007200213.tif 000013
【図１２】
2007200213.tif 000014