(57)【特許請求の範囲】
【請求項１】
主記憶装置へアクセスする中央演算処理装置にクロック信号を提供するクロック制御装置であって、
現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出部と、
前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断部と、
前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部とを備えることを特徴とするクロック制御装置。
【請求項２】
前記クロック切り替え判断部は、
順序に関係なく実行できる前記後続命令が存在する場合、前記中央演算処理装置に低クロック信号を供給すると判断し、
順序に関係なく実行できる前記後続命令が存在しない場合、前記中央演算処理装置に供給するクロック信号を停止すると判断することを特徴とする請求項１記載のクロック制御装置。
【請求項３】
前記クロック切り替え判断部は、
前記主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、
前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、
前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、
前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記メモリストールの発生の有無を判断するストール判断部とを備え、
前記メモリストール発生中である場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断することを特徴とする請求項１記載のクロック制御装置。
【請求項４】
前記キャッシュミス検出部は、キャッシュミスの発生を検出すると、前記キャッシュミスしたデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール判断部に通知し、
前記キャッシュデータ検出部は、前記キャッシュ装置にデータを格納したことを検出すると、前記格納したデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール判断部に通知し、
前記ストール判断部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの開始を判断し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの終了を判断することを特徴とする請求項３記載のクロック制御装置。
【請求項５】
前記ストール判断部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが開始したことを表すストール開始信号を前記クロック切り替え判断部に通知し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが終了したことを表すストール終了信号を前記クロック切り替え判断部に通知し、
前記クロック切り替え判断部は、前記ストール判断部によって前記ストール開始信号が通知されてから前記ストール終了信号が通知されるまでの間、前記メモリストール発生中であると判断することを特徴とする請求項４記載のクロック制御装置。
【請求項６】
前記命令検出部は、順序に関係なく実行できる前記後続命令が存在する場合、順序に関係なく実行できる前記後続命令の数を表す順序外命令数を前記クロック切り替え判断部へ通知し、
前記クロック切り替え判断部は、前記命令検出部によって通知された前記順序外命令数に応じて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期を決定することを特徴とする請求項１〜５のいずれかに記載のクロック制御装置。
【請求項７】
前記クロック切り替え判断部は、カウンタを有し、
前記クロック切り替え判断部は、
前記命令検出部によって前記順序外命令数が通知されると、前記順序外命令数を前記カウンタの値に設定し、
メモリストール発生中であると判定した場合、前記カウンタの値が０であるか否かを判断し、
前記カウンタの値が０であると判断した場合、前記中央演算処理装置に供給するクロック信号を停止させることを表すクロック停止信号を前記クロック切り替え部に送出し、
前記カウンタの値が０でないと判断した場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えることを表す低クロック切り替え信号を前記クロック切り替え部に送出した後、前記カウンタの値をデクリメントし、
メモリストール発生中でないと判定した場合、前記カウンタの値をリセットした後、送出中の前記クロック停止信号又は前記低クロック切り替え信号を停止することを特徴とする請求項６記載のクロック制御装置。
【請求項８】
前記中央演算処理装置が前記主記憶装置からフェッチした命令を格納するプリフェッチバッファと、
前記プリフェッチバッファが空であることを検出するプリフェッチバッファ検出部とをさらに備え、
前記クロック切り替え判断部は、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空であることが検出された場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断し、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空でないことが検出された場合、メモリストール発生中であるか否かを判定することを特徴とする請求項１〜７のいずれかに記載のクロック制御装置。
【請求項９】
主記憶装置へアクセスする中央演算処理装置にクロック信号を提供するクロック制御方法であって、
現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出ステップと、
前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出ステップにおける検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断ステップと、
前記クロック切り替え判断ステップにおける判断に従って、前記クロック信号を切り替えるクロック切り替えステップとを含むことを特徴とするクロック制御方法。
【請求項１０】
主記憶装置へアクセスする中央演算処理装置にクロック信号を提供するクロック制御プログラムであって、
現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出部と、
前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断部と、
前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部としてコンピュータを機能させることを特徴とするクロック制御プログラム。
【請求項１１】
主記憶装置へアクセスする中央演算処理装置にクロック信号を提供する集積回路であって、
現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出回路と、
前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出回路の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断回路と、
前記クロック切り替え判断回路による判断に従って、前記クロック信号を切り替えるクロック切り替え回路とを備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリストール発生時において、中央演算処理装置に供給されるクロック信号の切り替えを制御するクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路に関するものである。
【背景技術】
【０００２】
近年、プロセッサ、キャッシュ装置及び外部入出力ポートを備えた計算機システムは、複数のプロセッサ、複数の外部入出力ポート、及び動作クロックやバス幅の異なる複数のバスを備えるなど、機能が高度化すると共に、１チップ上へ実装する集積化が進んできている。また、計算機システムは、複数のプロセッサとの間で競合するバスアクセスを調停するメモリコントローラも存在するなど回路が複雑化している。さらに、中央演算処理装置（以下、ＣＰＵと呼ぶ）の動作クロックの向上はめざましく、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄａｔａ  Ａｓｓｉｓｔａｎｔ）、移動体通信端末、デジタルカメラ及び携帯オーディオ機器といった、バッテリ駆動などで動作する携帯型の電子機器を制御する計算機システムのＣＰＵの動作クロックも、向上の一途をたどっている。一方、携帯型の電子機器に対しては、ＣＰＵの高速化だけでなく、低消費電力化の要望も高い。
【０００３】
このような計算機システムの消費電力を低くするために、計算機システムのプロセッサ及びバスに対してクロックゲーティング技術が導入される場合がある。クロックゲーティング技術とは、一時的に未使用の回路ブロックが存在する場合、任意のサイクルだけその回路ブロックへのクロック信号の供給を停止することにより、計算機システム全体の消費電力を低減する技術である。
【０００４】
近年の計算機システムにおいて、ＣＰＵの動作クロックは格段に伸びているが、それに比べて、ＣＰＵ及び外部の主記憶装置に接続されるバスの動作クロックの伸び率は低い。そのため、メモリアクセスの際に、メモリストールと呼ばれる、ＣＰＵが待たされる現象が発生することになる。この時、ＣＰＵはメモリアクセス終了時にすぐに動作を再開する必要があるため、クロック信号は供給され続けている。そのため、クロックゲーティング技術を導入しても、省電力効果が薄く、数十ミリアンペアの電流が流れる例もある。
【０００５】
従来のメモリストール発生時の消費電力を削減するための技術として、キャッシュミスが発生した時、外部メモリにアクセスするためのプログラマブル・ウェイト・コントローラにおいて、設定されるウェイト数に応じたクロック数だけクロック供給停止信号が生成され、ＣＰＵおよびキャッシュ装置のうちの少なくとも一方に供給されるクロック信号が停止される技術があった（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−６９７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の構成では、メモリストールが発生した命令の後に続く命令が、順序に関係なく実行できる命令であっても、ＣＰＵに供給するクロック信号が停止しているため、実行することができず、性能低下が起こるという課題を有していた。
【０００８】
本発明は、上記の問題を解決するためになされたもので、性能を低下させることなく、消費電力を低減することができるクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路を提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明の一局面に係るクロック制御装置は、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知部と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出部と、前記ストール通知部からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断部と、前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部とを備える。
【００１０】
この構成によれば、アドレス情報検出部によって、中央演算処理装置から主記憶装置へのアクセスが検出され、主記憶装置におけるアクセス先のアドレスを表すアドレス情報が検出される。キャッシュミス検出部によって、中央演算処理装置と主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生が検出され、キャッシュデータ検出部によって、キャッシュ装置にデータを格納したことが検出される。そして、ストール通知部によって、アドレス情報検出部により検出されたアドレス情報と、キャッシュミス検出部での検出結果と、キャッシュデータ検出部での検出結果とに基づいて、主記憶装置にアクセスすることを表すメモリストールの開始と終了とが通知される。命令検出部によって、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる後続命令が存在するか否かが検出される。クロック切り替え判断部によって、ストール通知部からメモリストールの開始と終了との通知が受け取られ、メモリストール発生中であるか否かが判定される。ここで、メモリストール発生中であると判定された場合、命令検出部の検出結果に基づいて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかが判断される。そして、クロック切り替え部によって、クロック切り替え判断部による判断に従って、クロック信号が切り替えられる。
【発明の効果】
【００１１】
本発明によれば、メモリストール発生中において、現在実行中の命令に後続する後続命令が順序に関係なく実行できる場合は、中央演算処理装置に供給するクロック信号のクロック周波数を低下させ、後続の命令が順序に関係なく実行できない場合は、中央演算処理装置に供給するクロック信号を停止させるので、性能を低下させることなく、消費電力を低減することができる。
【００１２】
本発明の目的、特徴及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１における計算機システムを有する情報処理装置のハードウェア構成を示すブロック図である。
【図２】本発明の実施の形態１における計算機システムの構成を示すブロック図である。
【図３】本発明の実施の形態１におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。
【図４】図３のステップＳ１０６におけるクロック切り替え判断部によるクロック切り替え判断処理の流れを示すフローチャートである。
【図５】図３のステップＳ１０７におけるクロック切り替え部によるクロック切り替え処理の流れを示すフローチャートである。
【図６】本発明の実施の形態２における計算機システムの構成を示すブロック図である。
【図７】本発明の実施の形態２におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。
【図８】図７のステップＳ２０８におけるクロック切り替え判断部によるクロック切り替え判断処理の流れを示すフローチャートである。
【図９】本発明の実施の形態３における集積回路の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下添付図面を参照しながら、本発明の実施の形態について説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００１５】
（実施の形態１）
図１は、本発明の実施の形態１における情報処理装置のハードウェア構成を示すブロック図である。情報処理装置１は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置の一例は、代表的には、ＰＤＡ、移動体通信端末、デジタルカメラ及び携帯オーディオ機器などの携帯型の電子機器である。携帯型の電子機器では、バッテリ駆動などで動作することから、省電力化が特に要求されるため、特に有用である。
【００１６】
情報処理装置１は、計算機システム１０、バス１１、主記憶装置１２、タイマー回路１４、割込コントローラ１５、表示装置１６、入力装置１７及び通信装置１８を備えている。計算機システム１０、主記憶装置１２、タイマー回路１４、割込コントローラ１５、表示装置１６、入力装置１７及び通信装置１８は、バス１１を通じて互いに接続されている。また、必要に応じて、バス１１には、ハードディスク装置１３及び読取装置１９を接続することが可能となっている。ハードディスク装置１３、読取装置１９、表示装置１６及び入力装置１７は、それぞれ、インタフェース（Ｉ／Ｆ）を通じてバス１１に接続される。
【００１７】
計算機システム１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理部）２０、キャッシュ装置２１、メモリコントローラ２２及びクロック制御装置２３を備えている。なお、計算機システム１０は、望ましくは、単一の半導体基板に作り込んだＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）等の集積回路として構成される。また、このＬＳＩ上に、割り込みコントローラ１５など他の構成要素を備えてもよい。この計算機システム１０の詳細については、図２を用いて後で詳細を説明する。
【００１８】
主記憶装置１２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を備えている。ＲＯＭは、ＣＰＵ２０の動作を規定するコンピュータプログラムを記憶している。コンピュータプログラムは、ハードディスク装置１３に記憶させることもできる。ＣＰＵ２０は、ＲＯＭ又はハードディスク装置１３が格納するコンピュータプログラムを、必要に応じてＲＡＭに書き込みつつ、コンピュータプログラムが規定する処理を実行する。ＲＡＭは、ＣＰＵ２０が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。
【００１９】
なお、主記憶装置１２は、後述するキャッシュ装置２１と比べて、アクセス速度が遅いが、大容量のデータを格納することが可能である。また、ＲＯＭには、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリ及び記憶媒体も含まれる。ＲＡＭには、電源を切ると記憶内容が保持されない揮発性のメモリ及び記憶媒体が含まれる。
【００２０】
ハードディスク装置１３は、内蔵する不図示のハードディスクにコンピュータプログラム或いはデータを書き込むとともに、内蔵する不図示のハードディスクからコンピュータプログラム或いはデータを読み出す。
【００２１】
割込コントローラ１５は、タイマー回路１４、入力装置１７、ネットワークデバイスとしての通信装置１８、ハードディスク装置１３及び読取装置１９等から送られる割込要求信号を、ＣＰＵ２０へ中継する。各装置からの割込要求には優先度が付けられている。割り込みコントローラ１５は、同時に複数の装置から割込要求が発生した場合には、それらの割込要求を優先度に応じて調停する機能を有している。
【００２２】
表示装置１６は、例えばＬＣＤ（Ｌｉｇｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示器）であり、データ及び画像等を画面に表示したり、データ等を音声で出力したりする。
【００２３】
入力装置１７は、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、或いは着脱自在のマウスであり、ユーザの操作によりデータ等を入力する。タイマー回路１４は、一定の周期でタイマー割込信号を出力する。
【００２４】
通信装置１８は、電話回線、ネットワーク線、無線又は赤外線等の通信回線を通じて、外部と自身との間で、コンピュータプログラム或いはデータを交換する。
【００２５】
読取装置１９は、コンピュータ読み取り可能な記録媒体（例えば、ＣＤ、ＤＶＤ又はメモリカードなど）２４に記録されたコンピュータプログラム（クロック制御プログラム）或いはデータを読み取る。
【００２６】
以上のように、情報処理装置１は、コンピュータとして構成されている。上記コンピュータプログラムは、主記憶装置１２、不図示のフレキシブルディスク及びＣＤ−ＲＯＭ等のプログラム記録媒体を通じて供給することも、電気通信回線等の伝送媒体を通じて供給することも可能である。例えば、プログラム記録媒体としてＣＤ−ＲＯＭに記録されたコンピュータプログラムは、読取装置１９を情報処理装置１へ接続することにより、読み出すことができ、主記憶装置１２のＲＡＭ或いはハードディスク装置１３に格納することができる。
【００２７】
プログラム記録媒体としてＲＯＭによってコンピュータプログラムが供給される場合には、当該ＲＯＭを主記憶装置１２に搭載することにより、ＣＰＵ２０は上記コンピュータプログラムに従った処理を実行可能となる。電気通信回線等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置１８を通じて受信され、例えば、主記憶装置１２のＲＡＭ或いはハードディスク装置１３に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であっても良い。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
【００２８】
図２は、本発明の実施の形態１における計算機システムの構成を示すブロック図である。
【００２９】
図２において、計算機システム１００は、前述した図１の計算機システム１０に相当する。また、主記憶装置１２は、図１の主記憶装置１２を示している。
【００３０】
計算機システム１００は、ＣＰＵ２００、Ｌ２キャッシュ装置２１０、メモリコントローラ２２０及びクロック制御装置２３０を備えており、図１のバス１１を介して、主記憶装置１２と接続している。なお、図２では、バス１１を省略している。
【００３１】
ＣＰＵ２００は、図１のＣＰＵ２０に相当しており、ＣＰＵ２００を動作するクロック信号を受け付けるクロック入力部２０１、ＣＰＵコア部２０２及びＬ１キャッシュ装置２０３を備えている。ＣＰＵ２００は、主記憶装置１２が格納した命令およびデータを参照して、計算機システム１００で必要な処理を実行する。
【００３２】
クロック入力部２０１は、ＣＰＵ２００の外部から供給されたクロック信号を受け付け、受け付けたクロック信号をＣＰＵコア部２０２及びＬ１キャッシュ装置２０３に供給する。
【００３３】
ＣＰＵコア部２０２は、クロック入力部２０１によって供給されたクロック信号に同期して動作する。ＣＰＵコア部２０２は、計算機システム１００における処理を実行する本体である。ＣＰＵコア部２０２は、Ｌ１キャッシュ装置２０３、Ｌ２キャッシュ装置２１０、或いは、外部に接続された主記憶装置１２に格納された命令をフェッチした後、当該命令をデコードし、デコード結果に対応する命令を実行する。また、ＣＰＵコア部２０２は、デコード結果に対応した命令に従って、Ｌ１キャッシュ装置２０３、Ｌ２キャッシュ装置２１０、或いは、外部に接続された主記憶装置１２に格納されたデータを読み出し、或いは、Ｌ１キャッシュ装置２０３、Ｌ２キャッシュ装置２１０、或いは、外部に接続された主記憶装置１２にデータを書き込む。
【００３４】
Ｌ１キャッシュ装置２０３は、クロック入力部２０１によって供給されたクロック信号に同期して動作する。Ｌ１キャッシュ装置２０３は、ＣＰＵコア部２０２がアクセスするデータを、主記憶装置１２におけるアドレスを表すアドレス情報に対応付けて一時的に格納する。そして、ＣＰＵコア部２０２が主記憶装置１２にアクセスする際、アドレス情報に対応するデータがＬ１キャッシュ装置２０３に格納されている場合、ＣＰＵコア部２０２は、Ｌ１キャッシュ装置２０３が格納しているデータにアクセスする。これにより、主記憶装置１２にアクセスする場合に比べて、アクセス時間を大幅に短縮させることができる。また、外部に接続された主記憶装置１２にアクセスするための消費電力も削減することができる。
【００３５】
一方、ＣＰＵコア部２０２が主記憶装置１２にアクセスする際、アドレス情報に対応するデータがＬ１キャッシュ装置２０３に格納されていない場合、ＣＰＵコア部２０２は、Ｌ２キャッシュ装置２１０にアクセスし、アドレス情報に対応するデータを探し始める。
【００３６】
Ｌ２キャッシュ装置２１０は、図１のキャッシュ装置２１に相当しており、ＣＰＵ２００と主記憶装置１２との間に配置されている。Ｌ２キャッシュ装置２１０は、ＣＰＵコア部２０２がアクセスするデータを、主記憶装置１２におけるアドレスを表すアドレス情報に対応付けて一時的に格納する。そして、ＣＰＵコア部２０２が主記憶装置１２にアクセスする際、アドレス情報に対応するデータがＬ２キャッシュ装置２１０に格納されている場合、ＣＰＵコア部２０２は、Ｌ２キャッシュ装置２１０が格納しているデータにアクセスする。これにより、主記憶装置１２にアクセスする場合に比べて、アクセス時間を大幅に短縮させることができる。また、外部に接続された主記憶装置１２にアクセスするための消費電力も削減することができる。
【００３７】
一方、ＣＰＵコア部２０２が主記憶装置１２にアクセスする際、アドレス情報に対応するデータがＬ２キャッシュ装置２１０に格納されていない場合、ＣＰＵコア部２０２は、メモリコントローラ２２０を通じて、主記憶装置１２が格納しているデータにアクセスする。
【００３８】
メモリコントローラ２２０は、図１のメモリコントローラ２２に相当しており、外部に接続された主記憶装置１２にアクセスする、計算機システム１００内の回路と接続される。例えば、ＣＰＵ２００は、Ｌ２キャッシュ装置２１０を通して、メモリコントローラ２２０と接続する。メモリコントローラ２２０は、動作クロックの異なる、外部の主記憶装置１２とのインタフェースの役割を有する。また、メモリコントローラ２２０に接続される主記憶装置１２は、１つでもそれ以上でも良い。更に、メモリコントローラ２２０と接続される、外部に接続された主記憶装置１２にアクセスする、計算機システム１００内の回路は、１つでもそれ以上でも良い。メモリコントローラ２２０は、複数接続された、計算機システム１００内の回路からのアクセスを調停する役割を有する。
【００３９】
クロック制御装置２３０は、図１のクロック制御装置２３に相当しており、キャッシュミス信号検出部２３１、アドレス情報検出部２３２、キャッシュデータ検出部２３３、ストール判断部２３４、命令検出部２３５、クロック切り替え判断部２３６及びクロック切り替え部２３７を備えている。
【００４０】
キャッシュミス信号検出部２３１は、Ｌ２キャッシュ装置２１０におけるキャッシュミスの発生を検出する。キャッシュミス信号検出部２３１は、Ｌ２キャッシュ装置２１０におけるキャッシュミスの発生を通知する信号（キャッシュミス信号）を検出することにより、Ｌ２キャッシュ装置２１０におけるキャッシュミスの発生を検出する。ＣＰＵコア部２０２が主記憶装置１２のデータにアクセスする際、アクセス対象のアドレス情報に対応するデータを、Ｌ２キャッシュ装置２１０が格納してない場合、Ｌ２キャッシュ装置２１０は、キャッシュミス信号と、キャッシュミスが発生したデータに対応するアドレス情報とをキャッシュミス信号検出部２３１へ出力する。キャッシュミス信号検出部２３１は、キャッシュミス信号を検出し、キャッシュミスが発生したデータに対応するアドレス情報をストール判断部２３４に通知する。
【００４１】
アドレス情報検出部２３２は、ＣＰＵコア部２０２が、デコードした命令にしたがって、Ｌ１キャッシュ装置２０３、Ｌ２キャッシュ装置２１０、或いは、外部に接続された主記憶装置１２に格納されているデータを読み出す場合、或いは、Ｌ１キャッシュ装置２０３、Ｌ２キャッシュ装置２１０、或いは、外部に接続された主記憶装置１２にデータを書き込む場合に、ＣＰＵコア部２０２から発行されるアドレス情報を検出する。また、アドレス情報検出部２３２は、検出したアドレス情報をストール判断部２３４に通知する。
【００４２】
キャッシュデータ検出部２３３は、Ｌ２キャッシュ装置２１０にデータを格納したことを検出する。キャッシュデータ検出部２３３は、Ｌ２キャッシュ装置２１０にデータを格納したことを検出すると、格納されたデータの主記憶装置１２におけるアドレスを表すアドレス情報をストール判断部２３４に通知する。
【００４３】
キャッシュデータ検出部２３３は、ＣＰＵコア部２０２が、メモリコントローラ２２０を介して、外部に接続された主記憶装置１２に格納されたデータを読み出した際、或いは、主記憶装置１２にデータを書き込んだ際に、Ｌ２キャッシュ装置２１０にデータを格納したことと、格納されたデータに対応付けられた、主記憶装置１２におけるアドレス情報を検出する。また、キャッシュデータ検出部２３３は、検出したアドレス情報を、ストール判断部２３４に通知する。
【００４４】
ストール判断部２３４は、アドレス情報検出部２３２によって検出されたアドレス情報と、キャッシュミス信号検出部２３１での検出結果と、キャッシュデータ検出部２３３での検出結果とに基づいて、主記憶装置１２にアクセスすることを表すメモリストールの開始と終了とを通知する。ストール判断部２３４は、アドレス情報検出部２３２によって通知されたアドレス情報と、キャッシュミス信号検出部２３１によって通知されたアドレス情報とに基づいて、メモリストールの開始を判断する。また、ストール判断部２３４は、アドレス情報検出部２３２によって通知されたアドレス情報と、キャッシュデータ検出部２３３によって通知されたアドレス情報とに基づいて、メモリストールの終了を判断する。
【００４５】
ストール判断部２３４は、アドレス情報検出部２３２によって通知されたアドレス情報と、キャッシュミス信号検出部２３１によって通知されたアドレス情報とが一致する場合、メモリストールが開始したことを表すストール開始信号をクロック切り替え判断部２３６に通知する。また、ストール判断部２３４は、アドレス情報検出部２３２によって通知されたアドレス情報と、キャッシュデータ検出部２３３によって通知されたアドレス情報とが一致する場合、メモリストールが終了したことを表すストール終了信号をクロック切り替え判断部２３６に通知する。
【００４６】
すなわち、ストール判断部２３４は、アドレス情報検出部２３２によって検出されたアドレス情報と、キャッシュミス信号検出部２３１によって検出されたアドレス情報とを受信し、受信したアドレス情報を照合する。照合した結果、アドレス情報が一致した場合、ストール判断部２３４は、外部に接続された主記憶装置１２に格納されているデータの読み出しが開始されたこと、或いは、主記憶装置１２へのデータの書き込みが開始されたことを判断する。つまり、ストール判断部２３４は、ＣＰＵコア部２０２がデコードした命令が、メモリストールを開始したと判断する。
【００４７】
また、ストール判断部２３４は、ＣＰＵコア部２０２がデコードした命令が、メモリストールを開始したと判断した後、キャッシュデータ検出部２３３によって検出されたアドレス情報を受信する。そして、ストール判断部２３４は、キャッシュデータ検出部２３３によって検出されたアドレス情報と、アドレス情報検出部２３２によって検出されたアドレス情報とを照合する。照合した結果、アドレス情報が一致した場合、ストール判断部２３４は、外部に接続された主記憶装置１２に格納されているデータの読み出しが終了したこと、或いは、主記憶装置１２へのデータの書き込みが終了したことを判断する。つまり、ストール判断部２３４は、ＣＰＵコア部２０２がデコードした命令によって発生したメモリストールが終了したと判断する。
【００４８】
ストール判断部２３４は、判断結果に基づいて、メモリストールの開始を示すストール開始信号、または、メモリストールの終了を示すストール終了信号を、クロック切り替え判断部２３６に通知する。
【００４９】
命令検出部２３５は、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる後続命令が存在するか否かを検出する。
【００５０】
命令検出部２３５は、ＣＰＵコア部２０２がデコードした命令を、順に格納し、各命令の後続命令のうち、順序に関係なく順序外（Ｏｕｔ  ｏｆ  ｏｒｄｅｒ）で実行することができる命令数を探索する。例えば、１番目の命令が、レジスタＡの内容を更新する命令である場合、当該レジスタＡの結果を用いる命令が後続命令の中にあるか否かを探索する。探索した結果、３番目の命令が、レジスタＡの内容を演算に用いる場合、１番目の命令は、３番目の命令とデータ依存関係があることがわかる。この場合、２番目の命令は、１番目の命令とデータ依存関係がないので、１番目の命令の終了を待たなくても、実行することができる。よって、１番目の命令が順序外で実行できる後続命令の数は１となる。
【００５１】
このように、命令検出部２３５は、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、現在実行中の命令の実行結果を用いることなく実行可能な後続命令が存在するか否かを検出する。
【００５２】
命令検出部２３５は、順序に関係なく実行できる後続命令が存在する場合、順序に関係なく実行できる後続命令の数を表す順序外命令数をクロック切り替え判断部２３６へ通知する。すなわち、命令検出部２３５は、ＣＰＵコア部２０２から、ＣＰＵコア部２０２が現在実行している命令に関する情報を受信し、現在実行している命令に対して、順序外で実行できる後続命令の数（以下、“順序外命令数”と略す）をクロック切り替え判断部２３６に通知する。
【００５３】
クロック切り替え部２３７は、ＣＰＵ２００に供給する、高クロック信号２３８と、低クロック信号２３９とを受信する。なお、高クロック信号２３８及び低クロック信号２３９は、不図示のクロック信号生成部によって生成される。低クロック信号２３９は、高クロック信号２３８よりもクロック周波数が低いクロック信号である。
【００５４】
クロック切り替え部２３７は、クロック切り替え判断部２３６による判断に従って、クロック信号を切り替える。クロック切り替え部２３７は、クロック切り替え判断部２３６から、低クロック信号２３９に切り替えることを表す低クロック切り替え信号を受信していない場合、高クロック信号２３８をクロック入力部２０１に送信する。また、クロック切り替え部２３７は、クロック切り替え判断部２３６から低クロック切り替え信号を受信した場合、低クロック信号２３９をクロック入力部２０１に送信する。さらに、クロック切り替え部２３７は、クロック切り替え判断部２３６から、クロック信号を停止することを表すクロック停止信号を受信した場合、クロック入力部２０１に供給するクロック信号を停止する。
【００５５】
クロック切り替え判断部２３６は、ストール判断部２３４からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、命令検出部２３５の検出結果に基づいて、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えるか、停止するかを判断する。
【００５６】
クロック切り替え判断部２３６は、命令検出部２３５によって順序に関係なく実行できる後続命令が存在することが検出された場合、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えると判断し、命令検出部２３５によって順序に関係なく実行できる後続命令が存在しないことが検出された場合、ＣＰＵ２００に供給するクロック信号を停止すると判断する。
【００５７】
クロック切り替え判断部２３６は、ストール判断部２３４から、ストール開始信号またはストール終了信号を受信し、メモリストール発生中であるか否かを判定する。クロック切り替え判断部２３６は、ストール判断部２３４によってストール開始信号が通知されてからストール終了信号が通知されるまでの間、メモリストール発生中であると判断する。
【００５８】
また、クロック切り替え判断部２３６は、命令検出部２３５から、ＣＰＵコア部２０２が現在実行している命令に対する、順序外で実行できる後続命令の数に関する情報を受信する。クロック切り替え判断部２３６は、ストール開始信号を受信していないため、メモリストールを起こしていないと判定した場合、何もしない。そのため、クロック切り替え部２３７は、現在送信中のクロック信号である高クロック信号をそのままクロック入力部２０１に送信し続ける。
【００５９】
クロック切り替え判断部２３６は、命令検出部２３５によって通知された順序外命令数に応じて、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替える周期を決定する。
【００６０】
クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１を備える。低クロックサイクルカウンタ２５１には、命令検出部２３５によって検出された順序外命令数が設定される。クロック切り替え判断部２３６は、命令検出部２３５によって順序外命令数が通知されると、当該順序外命令数を低クロックサイクルカウンタ２５１の値に設定する。
【００６１】
クロック切り替え判断部２３６は、メモリストール発生中であると判定した場合、低クロックサイクルカウンタ２５１の値が０であるか否かを判断する。クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１の値が０であると判断した場合、ＣＰＵ２００に供給するクロック信号を停止させることを表すクロック停止信号をクロック切り替え部２３７に送出する。クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１の値が０でないと判断した場合、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えることを表す低クロック切り替え信号をクロック切り替え部２３７に送出した後、低クロックサイクルカウンタ２５１の値をデクリメントする。
【００６２】
クロック切り替え判断部２３６は、メモリストール発生中でないと判定した場合、低クロックサイクルカウンタ２５１の値をリセットした後、送出中のクロック停止信号又は低クロック切り替え信号を停止する。低クロック切り替え信号が停止されると、クロック切り替え部２３７は、出力するクロック信号を低クロック信号２３９から高クロック信号２３８に切り替える。また、クロック停止信号が停止されると、クロック切り替え部２３７は、停止していた高クロック信号２３８を出力する。
【００６３】
メモリストールを起こしていると判定した場合、クロック切り替え判断部２３６は、ＣＰＵコア部２０２が現在実行している命令に対する、順序外で実行できる後続命令の数の情報に基づいて、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えるか、停止するかを判別する。なお、クロック切り替え判断部２３６は、順序外命令数が０以外である場合、すなわち後続命令が順序外で実行できる場合、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えると判別する。また、クロック切り替え判断部２３６は、順序外命令数が０である場合、すなわち後続命令が順序外で実行できない場合、ＣＰＵ２００に供給するクロック信号を停止すると判別する。
【００６４】
低クロック信号２３９に切り替えると判別した場合、クロック切り替え判断部２３６は、クロック信号を低クロック信号２３９に切り替えるための低クロック切り替え信号をクロック切り替え部２３７に送信する。一方、クロック信号を停止すると判別した場合、クロック切り替え判断部２３６は、クロック信号を停止させるためのクロック停止信号をクロック切り替え部２３７に送信する。
【００６５】
以上の構成により、本実施の形態のクロック制御装置は、ＣＰＵ２００がメモリストールを発生するとき、後続命令が順序外で実行できる場合は、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えることができ、後続命令が順序外で実行できない場合は、ＣＰＵ２００に供給するクロック信号を停止することができる。これにより、メモリストールの発生している期間、計算機システムの性能低下を防止すると共に、消費電力を低減することができる。
【００６６】
なお、本実施の形態１において、計算機システム１００がクロック制御装置の一例に相当し、Ｌ２キャッシュ装置２１０がキャッシュ装置の一例に相当し、キャッシュミス信号検出部２３１がキャッシュミス検出部の一例に相当し、ストール判断部２３４がストール通知部の一例に相当し、低クロックサイクルカウンタ２５１がカウンタの一例に相当する。
【００６７】
次に、本発明の実施の形態１におけるクロック制御装置におけるクロック制御処理について説明する。図３は、本発明の実施の形態１におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。
【００６８】
まず、アドレス情報検出部２３２は、ＣＰＵ２００から主記憶装置１２へのアクセスを検出し、主記憶装置１２におけるアクセス先のアドレスを表すアドレス情報を検出する（ステップＳ１０１）。アドレス情報検出部２３２は、検出したアドレス情報を、ストール判断部２３４に通知する。
【００６９】
次に、キャッシュミス信号検出部２３１は、Ｌ２キャッシュ装置２１０においてキャッシュミスが検出されたか否かを判断する（ステップＳ１０２）。ここで、キャッシュミスが検出されないと判断された場合（ステップＳ１０２でＮＯ）、ステップＳ１０１の処理へ戻る。
【００７０】
一方、キャッシュミスが検出されたと判断された場合（ステップＳ１０２でＹＥＳ）、キャッシュミス信号検出部２３１は、キャッシュミスしたデータの主記憶装置１２におけるアドレスを表すアドレス情報をストール判断部２３４に通知する（ステップＳ１０３）。
【００７１】
次に、ストール判断部２３４は、アドレス情報検出部２３２によって通知されたアドレス情報と、キャッシュミス信号検出部２３１によって通知されたアドレス情報とが一致するか否かを判断する（ステップＳ１０４）。ここで、アドレス情報が一致しないと判断された場合（ステップＳ１０４でＮＯ）、ストール判断部２３４は、メモリストールが発生していないと判断し、クロック制御処理を終了する。
【００７２】
一方、アドレス情報が一致すると判断された場合（ステップＳ１０４でＹＥＳ）、ストール判断部２３４は、メモリストールが発生したと判断し、ストール開始信号をクロック切り替え判断部２３６に通知する（ステップＳ１０５）。
【００７３】
次に、クロック切り替え判断部２３６は、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えるか、停止するかを判断するクロック切り替え判断処理を実行する（ステップＳ１０６）。なお、ステップＳ１０６におけるクロック切り替え判断処理の詳細ついては、図４を用いて後述する。
【００７４】
次に、クロック切り替え部２３７は、クロック切り替え判断部２３６による判断に従って、ＣＰＵ２００に供給されるクロック信号を切り替えるクロック信号切り替え処理を実行する（ステップＳ１０７）。なお、ステップＳ１０７におけるクロック切り替え処理の詳細ついては、図５を用いて後述する。
【００７５】
次に、キャッシュデータ検出部２３３は、Ｌ２キャッシュ装置２１０においてデータ（キャッシュデータ）が検出されたか否かを判断する（ステップＳ１０８）。ここで、キャッシュデータが検出されていないと判断された場合（ステップＳ１０８でＮＯ）、ステップＳ１０６の処理へ戻る。
【００７６】
一方、キャッシュデータが検出されたと判断された場合（ステップＳ１０８でＹＥＳ）、キャッシュデータ検出部２３３は、Ｌ２キャッシュ装置２１０に格納されたデータの主記憶装置１２におけるアドレスを表すアドレス情報をストール判断部２３４に通知する（ステップＳ１０９）。
【００７７】
次に、ストール判断部２３４は、アドレス情報検出部２３２によって通知されたアドレス情報と、キャッシュデータ検出部２３３によって通知されたアドレス情報とが一致するか否かを判断する（ステップＳ１１０）。ここで、アドレス情報が一致しないと判断された場合（ステップＳ１１０でＮＯ）、ステップＳ１０６の処理へ戻る。なお、アドレス情報が一致しないと判断された場合、クロック制御処理を終了してもよい。
【００７８】
一方、アドレス情報が一致すると判断された場合（ステップＳ１１０でＹＥＳ）、ストール判断部２３４は、メモリストールが終了したと判断し、ストール終了信号をクロック切り替え判断部２３６に通知し（ステップＳ１１１）、ステップＳ１０６の処理へ戻る。
【００７９】
続いて、図３のステップＳ１０６におけるクロック切り替え判断部２３６によるクロック切り替え判断処理について説明する。図４は、図３のステップＳ１０６におけるクロック切り替え判断部２３６によるクロック切り替え判断処理の流れを示すフローチャートである。なお、ここでは、低クロックサイクルカウンタ２５１の初期値は０で、処理を開始するものとする。
【００８０】
クロック切り替え判断部２３６は、ストール判断部２３４から受信した、ストール開始信号とストール終了信号とに基づいて、現在、ＣＰＵコア部２０２がメモリストール発生中であるか否かを判定する（ステップＳ１）。すなわち、クロック切り替え判断部２３６は、ストール判断部２３４からストール開始信号を受信した場合、ＣＰＵコア部２０２がメモリストール発生中であると判定し、ストール判断部２３４からストール終了信号を受信した場合、メモリストール発生中でないと判定する。
【００８１】
メモリストールが起きてない場合、すなわちメモリストール発生中でないと判定された場合（ステップＳ１でＮＯ）、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１をリセット、すなわち低クロックサイクルカウンタ２５１の値に０をセットする（ステップＳ２）。次に、クロック切り替え判断部２３６は、クロック切り替え部２３７に送出している信号、すなわちクロック停止信号又は低クロック切り替え信号を停止する（ステップＳ３）。その後、図３のステップＳ１０７の処理へ移行する。
【００８２】
メモリストールの発生している期間である場合、すなわちメモリストール発生中であると判定された場合（ステップＳ１でＹＥＳ）、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１の値が０であるか否かを判定する（ステップＳ４）。
【００８３】
低クロックサイクルカウンタ２５１の値が０でないと判定された場合（ステップＳ４でＮＯ）、クロック切り替え判断部２３６は、現在実行中の命令に対して順序外で実行できる命令があると判断し、クロック切り替え部２３７に、低クロック切り替え信号を送出する（ステップＳ９）。次に、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１をデクリメントする（ステップＳ１０）。その後、図３のステップＳ１０７の処理へ移行する。
【００８４】
一方、低クロックサイクルカウンタ２５１の値が０であると判定された場合（ステップＳ４でＹＥＳ）、クロック切り替え判断部２３６は、命令検出部２３５から順序外命令数を受信する（ステップＳ５）。次に、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１の値に、受信した順序外命令数の値をセットする（ステップＳ６）。
【００８５】
次に、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１の値が０であるか否かを判定する（ステップＳ７）。低クロックサイクルカウンタ２５１の値が０でないと判定された場合（ステップＳ７でＮＯ）、現在実行中の命令に対して順序外で実行できる命令があることを表しているため、クロック切り替え判断部２３６は、クロック切り替え部２３７に、低クロック切り替え信号を送出する（ステップＳ９）。次に、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１をデクリメントする（ステップＳ１０）。その後、ステップＳ１の処理へ戻り、ステップＳ１以降の処理を繰り返す。これにより、クロック切り替え判断部２３６は、低クロックサイクルカウンタ２５１が０になるまで、低クロック切り替え信号を送出し続ける。
【００８６】
低クロックサイクルカウンタ２５１の値が０であると判定された場合（ステップＳ７でＹＥＳ）、後続の命令は順序外で実行できない命令であるため、クロック切り替え判断部２３６は、クロック切り替え部２３７にクロック停止信号を送出する（ステップＳ８）。その後、図３のステップＳ１０７の処理へ移行する。これにより、クロック切り替え判断部２３６は、メモリストールの発生している期間中、クロック停止信号を送出し続ける。
【００８７】
これにより、クロック切り替え部２３７は、ストール開始信号を受信してからストール終了信号を受信するまでの間を、メモリストールの発生している期間と判断し、後続命令が順序外で実行できる場合は、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替える。また、クロック切り替え部２３７は、後続命令が順序外で実行できない場合は、ＣＰＵ２００に供給するクロック信号を停止する。その後、ストール終了信号を受信すると、クロック切り替え部２３７は、メモリストールが起きていないと判断し、通常の高クロック信号２３８がＣＰＵ２００に供給されることになる。
【００８８】
続いて、図３のステップＳ１０７におけるクロック切り替え部２３７によるクロック切り替え処理について説明する。図５は、図３のステップＳ１０７におけるクロック切り替え部２３７によるクロック切り替え処理の流れを示すフローチャートである。
【００８９】
まず、クロック切り替え部２３７は、低クロック切り替え信号又はクロック停止信号をクロック切り替え判断部２３６から受信中であるか否かを判断する（ステップＳ１１）。ここで、低クロック切り替え信号又はクロック停止信号を受信していないと判断された場合（ステップＳ１１でＮＯ）、クロック切り替え部２３７は、高クロック信号２３８をＣＰＵ２００のクロック入力部２０１へ送出する（ステップＳ１２）。
【００９０】
一方、低クロック切り替え信号又はクロック停止信号を受信中であると判断された場合（ステップＳ１１でＹＥＳ）、クロック切り替え部２３７は、低クロック切り替え信号を受信しているか否かを判断する（ステップＳ１３）。ここで、低クロック切り替え信号を受信していると判断された場合（ステップＳ１３でＹＥＳ）、クロック切り替え部２３７は、低クロック信号２３９をＣＰＵ２００のクロック入力部２０１へ送出する（ステップＳ１４）。
【００９１】
一方、低クロック切り替え信号を受信していないと判断された場合（ステップＳ１３でＮＯ）、クロック切り替え部２３７は、クロック停止信号を受信していると判断し、クロック信号を停止する（ステップＳ１５）。
【００９２】
以上により、ＣＰＵ２００がメモリストールを起こしているときに、後続命令が順序外で実行できる場合、ＣＰＵ２００に供給するクロック信号が低クロック信号２３９に切り替えられ、後続命令が順序外で実行できない場合、ＣＰＵ２００に供給するクロック信号が停止されるので、メモリストールの発生している間、性能を低下させることなく、低消費電力を実現することができる。
【００９３】
（実施の形態２）
図６は、本発明の実施の形態２における計算機システムの構成を示すブロック図である。なお、実施の形態２の情報処理装置における計算機システム以外の構成は、図１に示す実施の形態１の情報処理装置の構成と同じであるので説明を省略する。図６において、図２と同じ構成要素については同じ符号を用い、説明を省略する。
【００９４】
図６において、計算機システム１０１は、前述した図１の計算機システム１０に相当する。また、主記憶装置１２は、図１の主記憶装置１２に相当する。
【００９５】
計算機システム１０１は、ＣＰＵ２００、Ｌ２キャッシュ装置２１０、メモリコントローラ２２０及びクロック制御装置２４０を備えており、図１のバス１１を介して、主記憶装置１２と接続している。クロック制御装置２４０以外の構成は、図２と同様の構成である。
【００９６】
クロック制御装置２４０は、図１のクロック制御装置２３に相当しており、キャッシュミス信号検出部２３１、アドレス情報検出部２４２、キャッシュデータ検出部２３３、ストール判断部２３４、命令検出部２３５、プリフェッチバッファ検出部２４１、クロック切り替え判断部２４３及びクロック切り替え部２３７を備えている。プリフェッチバッファ検出部２４１、アドレス情報検出部２４２及びクロック切り替え判断部２４３以外の構成は、実施の形態１で既に説明したため、異なる構成要素についてのみ、詳細を説明する。
【００９７】
ＣＰＵコア部２０２は、プリフェッチバッファ２０４を備える。プリフェッチバッファ２０４は、ＣＰＵコア部２０２が主記憶装置１２からフェッチした命令を格納する。
【００９８】
プリフェッチバッファ検出部２４１は、ＣＰＵコア部２０２及びクロック切り替え判断部２４３と接続されている。プリフェッチバッファ検出部２４１は、ＣＰＵコア部２０２が主記憶装置１２からフェッチした命令を格納するためのプリフェッチバッファ２０４が空であることを検出する。プリフェッチバッファ検出部２４１は、プリフェッチバッファ２０４が空である場合、クロック切り替え判断部２４３にプリフェッチバッファ空信号を、ＣＰＵコア部２０２がプリフェッチバッファ２０４へ命令を格納するサイクル分、送信する。
【００９９】
アドレス情報検出部２４２は、ＣＰＵコア部２０２及びストール判断部２３４と接続される。アドレス情報検出部２４２は、ＣＰＵコア部２０２がフェッチする命令のアドレス情報を検出し、検出したアドレス情報を、ストール判断部２３４に通知する。なお、アドレス情報検出部２４２によって検出されるアドレス情報は、ＣＰＵコア部２０２によってアクセスされる主記憶装置１２におけるアドレスを表す。
【０１００】
クロック切り替え判断部２４３は、ストール判断部２３４、命令検出部２３５、クロック切り替え部２３７及びプリフェッチバッファ検出部２４１と接続されている。クロック切り替え判断部２４３は、ストール判断部２３４から、ストール開始信号またはストール終了信号を受信し、メモリストール発生中であるか否かを判定する。また、クロック切り替え判断部２４３は、命令検出部２３５から、ＣＰＵコア部２０２が現在実行している命令に対する、順序外で実行できる後続命令の数に関する情報を受信する。さらに、クロック切り替え判断部２４３は、プリフェッチバッファ検出部２４１から、プリフェッチバッファ空信号を受信する。
【０１０１】
クロック切り替え判断部２４３は、プリフェッチバッファ検出部２４１によってプリフェッチバッファ２０４が空であることが検出された場合、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えると判断する。また、クロック切り替え判断部２４３は、プリフェッチバッファ検出部２４１によってプリフェッチバッファ２０４が空でないことが検出された場合、メモリストール発生中であるか否かを判定する。
【０１０２】
クロック切り替え判断部２４３は、プリフェッチバッファ検出部２４１から、プリフェッチバッファ空信号を受信している間、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えると判断し、低クロック切り替え信号をクロック切り替え部２３７に送信する。この場合、クロック切り替え判断部２４３は、メモリストール発生中であるか否かに関わらず、プリフェッチバッファ空信号を受信している間、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えると判断する。
【０１０３】
また、プリフェッチバッファ空信号を受信していない間で、ストール開始信号を受信していないため、メモリストールを起こしていないと判定した場合、クロック切り替え判断部２４３は、何もしない。そのため、クロック切り替え部２３７は、現在送信中のクロック信号である高クロック信号をそのままクロック入力部２０１に送信し続ける。
【０１０４】
また、プリフェッチバッファ空信号を受信していない間で、メモリストールを起こしていると判定した場合、クロック切り替え判断部２４３は、ＣＰＵコア部２０２が現在実行している命令に対する、順序外で実行できる後続命令の数に関する情報に基づいて、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えるか、停止するかを判別する。なお、クロック切り替え判断部２４３は、順序外命令数が０以外である場合、すなわち後続命令が順序外で実行できる場合、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えると判別する。また、クロック切り替え判断部２４３は、順序外命令数が０である場合、すなわち後続命令が順序外で実行できない場合、ＣＰＵ２００に供給するクロック信号を停止すると判別する。
【０１０５】
低クロック信号２３９に切り替えると判別した場合、クロック切り替え判断部２４３は、クロック信号を低クロック信号２３９に切り替えるための低クロック切り替え信号をクロック切り替え部２３７に送信する。一方、クロック信号を停止すると判別した場合、クロック切り替え判断部２４３は、クロック信号を停止させるためのクロック停止信号をクロック切り替え部２３７に送信する。
【０１０６】
なお、クロック切り替え判断部２４３は、低クロックサイクルカウンタ２５１を備える。低クロックサイクルカウンタ２５１については、実施の形態１で既に説明しているので、ここでは説明を省略する。
【０１０７】
次に、本発明の実施の形態２におけるクロック制御装置におけるクロック制御処理について説明する。図７は、本発明の実施の形態２におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。
【０１０８】
なお、図７のステップＳ２０１〜Ｓ２０５，Ｓ２０９〜Ｓ２１３の処理は、図３におけるステップＳ１０１〜Ｓ１０５，Ｓ１０７〜Ｓ１１１の処理と同じであるので、詳細な説明を省略する。
【０１０９】
次に、プリフェッチバッファ検出部２４１は、プリフェッチバッファ２０４が空であるか否かを判断する（ステップＳ２０６）。プリフェッチバッファ２０４が空でないと判断された場合（ステップＳ２０６でＮＯ）、ステップＳ２０８の処理へ移行する。一方、プリフェッチバッファ２０４が空であると判断された場合（ステップＳ２０６でＹＥＳ）、プリフェッチバッファ検出部２４１は、プリフェッチバッファ空信号をクロック切り替え判断部２４３に通知する。
【０１１０】
次に、クロック切り替え判断部２４３は、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替えるか、停止するかを判断するクロック切り替え判断処理を実行する（ステップＳ２０８）。なお、ステップＳ２０８におけるクロック切り替え判断処理の詳細ついては、図８を用いて後述する。
【０１１１】
続いて、図７のステップＳ２０８におけるクロック切り替え判断部２４３によるクロック切り替え判断処理について説明する。図８は、図７のステップＳ２０８におけるクロック切り替え判断部２４３によるクロック切り替え判断処理の流れを示すフローチャートである。なお、ここでは、低クロックサイクルカウンタ２５１の初期値は０で、処理を開始するものとする。
【０１１２】
まず、クロック切り替え判断部２４３は、プリフェッチバッファ検出部２４１からプリフェッチバッファ空信号を受信したか否かを判断する（ステップＳ２１）。ここで、プリフェッチバッファ空信号を受信したと判断された場合（ステップＳ２１でＹＥＳ）、クロック切り替え判断部２４３は、クロック切り替え部２３７に、低クロック切り替え信号を送出する（ステップＳ３０）。
【０１１３】
一方、プリフェッチバッファ空信号を受信していないと判断された場合（ステップＳ２１でＮＯ）、クロック切り替え判断部２４３は、ストール判断部２３４から受信した、ストール開始信号とストール終了信号とに基づいて、現在、ＣＰＵコア部２０２がメモリストール発生中であるか否かを判定する（ステップＳ２２）。なお、ステップＳ２２〜Ｓ３１までの処理は、図４におけるステップＳ１〜Ｓ１０までの処理と同じであるので、詳細な説明を省略する。
【０１１４】
ステップＳ２４において、クロック切り替え判断部２４３は、クロック停止信号又は低クロック切り替え信号を停止した後、図７のステップＳ２０９の処理へ移行する。また、ステップＳ２９において、クロック切り替え判断部２４３は、クロック切り替え部２３７にクロック停止信号を送出した後、図７のステップＳ２０９の処理へ移行する。さらに、ステップＳ３１において、クロック切り替え判断部２４３は、低クロックサイクルカウンタ２５１をデクリメントした後、図７のステップＳ２０９の処理へ移行する。
【０１１５】
以上により、本実施の形態２のクロック制御装置は、ＣＰＵ２００のプリフェッチバッファ２０４が空であるとき、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替え、性能を低下させることなく、低消費電力を実現することができる。
【０１１６】
また、プリフェッチバッファ２０４に後続の命令が格納された後は、実施の形態１と同様に、ＣＰＵ２００がメモリストールを起こしており、後続命令が順序外で実行できる場合、ＣＰＵ２００に供給するクロック信号を低クロック信号２３９に切り替え、後続の命令を順序外で実行する。また、ＣＰＵ２００がメモリストールを起こしているが、後続命令が順序外で実行できない場合、ＣＰＵ２００に供給するクロック信号を停止する。これにより、性能を低下させることなく、低消費電力を実現することができる。
【０１１７】
（実施の形態３）
図９は、本発明の実施の形態３における集積回路１０２の構成を示すブロック図である。図９に示す集積回路１０２は、ＣＰＵ２００、Ｌ２キャッシュ装置２１０、メモリコントローラ２２０及びクロック制御装置３３０を備えている。なお、図９に示す実施の形態３の集積回路１０２において、実施の形態１と同じ構成については、同じ符号を付し、説明を省略する。
【０１１８】
クロック制御装置３３０は、キャッシュミス信号検出回路３３１、アドレス情報検出回路３３２、キャッシュデータ検出回路３３３、ストール判断回路３３４、命令検出回路３３５、クロック切り替え判断回路３３６及びクロック切り替え回路３３７を備えている。
【０１１９】
実施の形態３におけるキャッシュミス信号検出回路３３１、アドレス情報検出回路３３２、キャッシュデータ検出回路３３３、ストール判断回路３３４、命令検出回路３３５、クロック切り替え判断回路３３６及びクロック切り替え回路３３７は、それぞれ、実施の形態１におけるキャッシュミス信号検出部２３１、アドレス情報検出部２３２、キャッシュデータ検出部２３３、ストール判断部２３４、命令検出部２３５、クロック切り替え判断部２３６及びクロック切り替え部２３７と同じ機能を有している。
【０１２０】
このように、ＣＰＵ２００、Ｌ２キャッシュ装置２１０、メモリコントローラ２２０及びクロック制御装置３３０は、１つの集積回路に搭載することができる。
【０１２１】
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
【０１２２】
本発明の一局面に係るクロック制御装置は、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知部と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出部と、前記ストール通知部からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断部と、前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部とを備える。
【０１２３】
本発明の他の局面に係るクロック制御方法は、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出ステップと、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出ステップと、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出ステップと、前記アドレス情報検出ステップにおいて検出された前記アドレス情報と、前記キャッシュミス検出ステップでの検出結果と、前記キャッシュデータ検出ステップでの検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知ステップと、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出ステップと、前記ストール通知ステップにおいて通知されたメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出ステップにおける検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断ステップと、前記クロック切り替え判断ステップにおける判断に従って、前記クロック信号を切り替えるクロック切り替えステップとを含む。
【０１２４】
本発明の他の局面に係るクロック制御プログラムは、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知部と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出部と、前記ストール通知部からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断部と、前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部としてコンピュータを機能させる。
【０１２５】
本発明の他の局面に係る集積回路は、中央演算処理装置と、前記中央演算処理装置と主記憶装置との間に配置されたキャッシュ装置と、前記中央演算処理装置から前記主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出回路と、前記キャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出回路と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出回路と、前記アドレス情報検出回路によって検出された前記アドレス情報と、前記キャッシュミス検出回路での検出結果と、前記キャッシュデータ検出回路での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知回路と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出回路と、前記ストール通知回路からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出回路の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断回路と、前記クロック切り替え判断回路による判断に従って、前記クロック信号を切り替えるクロック切り替え回路とを備える。
【０１２６】
これらの構成によれば、アドレス情報検出部によって、中央演算処理装置から主記憶装置へのアクセスが検出され、主記憶装置におけるアクセス先のアドレスを表すアドレス情報が検出される。キャッシュミス検出部によって、中央演算処理装置と主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生が検出され、キャッシュデータ検出部によって、キャッシュ装置にデータを格納したことが検出される。そして、ストール通知部によって、アドレス情報検出部により検出されたアドレス情報と、キャッシュミス検出部での検出結果と、キャッシュデータ検出部での検出結果とに基づいて、主記憶装置にアクセスすることを表すメモリストールの開始と終了とが通知される。命令検出部によって、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる後続命令が存在するか否かが検出される。クロック切り替え判断部によって、ストール通知部からメモリストールの開始と終了との通知が受け取られ、メモリストール発生中であるか否かが判定される。ここで、メモリストール発生中であると判定された場合、命令検出部の検出結果に基づいて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかが判断される。そして、クロック切り替え部によって、クロック切り替え判断部による判断に従って、クロック信号が切り替えられる。
【０１２７】
したがって、メモリストール発生中において、現在実行中の命令に後続する後続命令が順序に関係なく実行できる場合は、中央演算処理装置に供給するクロック信号のクロック周波数を低下させ、後続の命令が順序に関係なく実行できない場合は、中央演算処理装置に供給するクロック信号を停止させるので、性能を低下させることなく、消費電力を低減することができる。
【０１２８】
また、上記のクロック制御装置において、前記クロック切り替え判断部は、前記命令検出部によって順序に関係なく実行できる前記後続命令が存在することが検出された場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断し、前記命令検出部によって順序に関係なく実行できる前記後続命令が存在しないことが検出された場合、前記中央演算処理装置に供給するクロック信号を停止すると判断することが好ましい。
【０１２９】
この構成によれば、順序に関係なく実行できる後続命令が存在する場合、中央演算処理装置に供給するクロック信号が低クロック信号に切り替えられるので、メモリストール発生中であっても、順序に関係なく実行できる後続命令が低クロック信号で実行される。また、順序に関係なく実行できる後続命令が存在しない場合、中央演算処理装置に供給するクロック信号が停止される。したがって、性能を低下させることなく、消費電力を低減することができる。
【０１３０】
また、上記のクロック制御装置において、前記キャッシュミス検出部は、キャッシュミスの発生を検出すると、前記キャッシュミスしたデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール通知部に通知し、前記キャッシュデータ検出部は、前記キャッシュ装置にデータを格納したことを検出すると、前記格納したデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール通知部に通知し、前記ストール通知部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの開始を判断し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの終了を判断することが好ましい。
【０１３１】
この構成によれば、キャッシュミス検出部によって、キャッシュミスの発生が検出されると、キャッシュミスしたデータの主記憶装置におけるアドレスを表すアドレス情報がストール通知部に通知される。また、キャッシュデータ検出部によって、キャッシュ装置にデータを格納したことが検出されると、格納したデータの主記憶装置におけるアドレスを表すアドレス情報がストール通知部に通知される。そして、ストール通知部によって、アドレス情報検出部から通知されたアドレス情報と、キャッシュミス検出部から通知されたアドレス情報とに基づいて、メモリストールの開始が判断され、アドレス情報検出部から通知されたアドレス情報と、キャッシュデータ検出部から通知されたアドレス情報とに基づいて、メモリストールの終了が判断される。
【０１３２】
したがって、主記憶装置におけるアクセス先のアドレスを表すアドレス情報と、キャッシュミスしたデータの主記憶装置におけるアドレスを表すアドレス情報とを照合することにより、メモリストールの開始を判断することができる。また、主記憶装置におけるアクセス先のアドレスを表すアドレス情報と、キャッシュ装置に格納したデータの主記憶装置におけるアドレスを表すアドレス情報とを照合することにより、メモリストールの終了を判断することができる。
【０１３３】
また、上記のクロック制御装置において、前記ストール通知部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが開始したことを表すストール開始信号を前記クロック切り替え判断部に通知し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが終了したことを表すストール終了信号を前記クロック切り替え判断部に通知し、前記クロック切り替え判断部は、前記ストール通知部によって前記ストール開始信号が通知されてから前記ストール終了信号が通知されるまでの間、前記メモリストール発生中であると判断することが好ましい。
【０１３４】
この構成によれば、ストール通知部によって、アドレス情報検出部から通知されたアドレス情報と、キャッシュミス検出部から通知されたアドレス情報とが一致する場合、メモリストールが開始したことを表すストール開始信号がクロック切り替え判断部に通知される。また、ストール通知部によって、アドレス情報検出部から通知されたアドレス情報と、キャッシュデータ検出部から通知されたアドレス情報とが一致する場合、メモリストールが終了したことを表すストール終了信号がクロック切り替え判断部に通知される。そして、クロック切り替え判断部によって、ストール通知部からストール開始信号が通知されてからストール終了信号が通知されるまでの間、メモリストール発生中であると判断される。
【０１３５】
したがって、ストール開始信号とストール終了信号とを受信することにより、メモリストールの発生を容易に判断することができる。
【０１３６】
また、上記のクロック制御装置において、前記命令検出部は、順序に関係なく実行できる前記後続命令が存在する場合、順序に関係なく実行できる前記後続命令の数を表す順序外命令数を前記クロック切り替え判断部へ通知し、前記クロック切り替え判断部は、前記命令検出部によって通知された前記順序外命令数に応じて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期を決定することが好ましい。
【０１３７】
この構成によれば、命令検出部によって、順序に関係なく実行できる後続命令が存在する場合、順序に関係なく実行できる後続命令の数を表す順序外命令数がクロック切り替え判断部へ通知される。そして、クロック切り替え判断部によって、命令検出部から通知された順序外命令数に応じて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期が決定される。
【０１３８】
したがって、順序に関係なく実行できる後続命令の数を表す順序外命令数に応じて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期が決定されるので、低クロック信号に切り替える周期を適切に制御することができる。
【０１３９】
また、上記のクロック制御装置において、前記クロック切り替え判断部は、カウンタを有し、前記クロック切り替え判断部は、前記命令検出部によって前記順序外命令数が通知されると、前記順序外命令数を前記カウンタの値に設定し、メモリストール発生中であると判定した場合、前記カウンタの値が０であるか否かを判断し、前記カウンタの値が０であると判断した場合、前記中央演算処理装置に供給するクロック信号を停止させることを表すクロック停止信号を前記クロック切り替え部に送出し、前記カウンタの値が０でないと判断した場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えることを表す低クロック切り替え信号を前記クロック切り替え部に送出した後、前記カウンタの値をデクリメントし、メモリストール発生中でないと判定した場合、前記カウンタの値をリセットした後、送出中の前記クロック停止信号又は前記低クロック切り替え信号を停止することが好ましい。
【０１４０】
この構成によれば、命令検出部から順序外命令数が通知されると、クロック切り替え判断部によって、順序外命令数がカウンタの値に設定され、メモリストール発生中であると判定された場合、カウンタの値が０であるか否かが判断される。そして、カウンタの値が０であると判断された場合、中央演算処理装置に供給するクロック信号を停止させることを表すクロック停止信号がクロック切り替え部に送出される。一方、カウンタの値が０でないと判断された場合、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えることを表す低クロック切り替え信号がクロック切り替え部に送出された後、カウンタの値がデクリメントされる。また、メモリストール発生中でないと判定された場合、カウンタの値がリセットされた後、送出中のクロック停止信号又は低クロック切り替え信号が停止される。
【０１４１】
したがって、順序外命令数がカウンタの値に設定されるので、カウンタの値に基づいて、低クロック切り替え信号を送出する周期を容易に決定することができる。
【０１４２】
また、上記のクロック制御装置において、前記中央演算処理装置が前記主記憶装置からフェッチした命令を格納するプリフェッチバッファと、前記プリフェッチバッファが空であることを検出するプリフェッチバッファ検出部とをさらに備え、前記クロック切り替え判断部は、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空であることが検出された場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断し、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空でないことが検出された場合、メモリストール発生中であるか否かを判定することが好ましい。
【０１４３】
この構成によれば、プリフェッチバッファには、中央演算処理装置が主記憶装置からフェッチした命令が格納される。また、プリフェッチバッファ検出部によって、プリフェッチバッファが空であることが検出される。そして、プリフェッチバッファが空であることが検出された場合、クロック切り替え判断部によって、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断され、プリフェッチバッファが空でないことが検出された場合、メモリストール発生中であるか否かが判定される。
【０１４４】
したがって、プリフェッチバッファが空である場合、中央演算処理装置に低クロック信号が供給されるので、中央演算処理装置が命令を実行しない間、消費電力を低減することができる。
【０１４５】
なお、発明の詳細な説明の項においてなされた具体的な実施態様または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、そのような具体例にのみ限定して狭義に解釈されるべきものではなく、本発明の精神と次に記載する特許請求事項との範囲内で、種々変更して実施することができるものである。
【産業上の利用可能性】
【０１４６】
本発明にかかるクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路は、メモリストール発生中のクロック信号の切り替えを制御する機能を有し、ＰＤＡ、移動体通信端末、デジタルカメラ及び携帯オーディオ機器などの携帯型の電子機器として有用である。また、本発明にかかるクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路は、バッテリ駆動の電子機器などの用途にも応用できる。
【図１】
0005388864.tif 000002
【図２】
0005388864.tif 000003
【図３】
0005388864.tif 000004
【図４】
0005388864.tif 000005
【図５】
0005388864.tif 000006
【図６】
0005388864.tif 000007
【図７】
0005388864.tif 000008
【図８】
0005388864.tif 000009
【図９】
0005388864.tif 000010