JP5388864B2 - クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路 - Google Patents

クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路 Download PDF

Info

Publication number
JP5388864B2
JP5388864B2 JP2009545349A JP2009545349A JP5388864B2 JP 5388864 B2 JP5388864 B2 JP 5388864B2 JP 2009545349 A JP2009545349 A JP 2009545349A JP 2009545349 A JP2009545349 A JP 2009545349A JP 5388864 B2 JP5388864 B2 JP 5388864B2
Authority
JP
Japan
Prior art keywords
clock
unit
instruction
stall
address information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009545349A
Other languages
English (en)
Other versions
JPWO2009075102A1 (ja
Inventor
亮 横山
忠雄 谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2009545349A priority Critical patent/JP5388864B2/ja
Publication of JPWO2009075102A1 publication Critical patent/JPWO2009075102A1/ja
Application granted granted Critical
Publication of JP5388864B2 publication Critical patent/JP5388864B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Power Sources (AREA)

Description

本発明は、メモリストール発生時において、中央演算処理装置に供給されるクロック信号の切り替えを制御するクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路に関するものである。
近年、プロセッサ、キャッシュ装置及び外部入出力ポートを備えた計算機システムは、複数のプロセッサ、複数の外部入出力ポート、及び動作クロックやバス幅の異なる複数のバスを備えるなど、機能が高度化すると共に、1チップ上へ実装する集積化が進んできている。また、計算機システムは、複数のプロセッサとの間で競合するバスアクセスを調停するメモリコントローラも存在するなど回路が複雑化している。さらに、中央演算処理装置(以下、CPUと呼ぶ)の動作クロックの向上はめざましく、PDA(Personal Data Assistant)、移動体通信端末、デジタルカメラ及び携帯オーディオ機器といった、バッテリ駆動などで動作する携帯型の電子機器を制御する計算機システムのCPUの動作クロックも、向上の一途をたどっている。一方、携帯型の電子機器に対しては、CPUの高速化だけでなく、低消費電力化の要望も高い。
このような計算機システムの消費電力を低くするために、計算機システムのプロセッサ及びバスに対してクロックゲーティング技術が導入される場合がある。クロックゲーティング技術とは、一時的に未使用の回路ブロックが存在する場合、任意のサイクルだけその回路ブロックへのクロック信号の供給を停止することにより、計算機システム全体の消費電力を低減する技術である。
近年の計算機システムにおいて、CPUの動作クロックは格段に伸びているが、それに比べて、CPU及び外部の主記憶装置に接続されるバスの動作クロックの伸び率は低い。そのため、メモリアクセスの際に、メモリストールと呼ばれる、CPUが待たされる現象が発生することになる。この時、CPUはメモリアクセス終了時にすぐに動作を再開する必要があるため、クロック信号は供給され続けている。そのため、クロックゲーティング技術を導入しても、省電力効果が薄く、数十ミリアンペアの電流が流れる例もある。
従来のメモリストール発生時の消費電力を削減するための技術として、キャッシュミスが発生した時、外部メモリにアクセスするためのプログラマブル・ウェイト・コントローラにおいて、設定されるウェイト数に応じたクロック数だけクロック供給停止信号が生成され、CPUおよびキャッシュ装置のうちの少なくとも一方に供給されるクロック信号が停止される技術があった(例えば、特許文献1参照)。
特開2002−6979号公報
しかしながら、従来の構成では、メモリストールが発生した命令の後に続く命令が、順序に関係なく実行できる命令であっても、CPUに供給するクロック信号が停止しているため、実行することができず、性能低下が起こるという課題を有していた。
本発明は、上記の問題を解決するためになされたもので、性能を低下させることなく、消費電力を低減することができるクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路を提供することを目的とするものである。
本発明の一局面に係るクロック制御装置は、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知部と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出部と、前記ストール通知部からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断部と、前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部とを備える。
この構成によれば、アドレス情報検出部によって、中央演算処理装置から主記憶装置へのアクセスが検出され、主記憶装置におけるアクセス先のアドレスを表すアドレス情報が検出される。キャッシュミス検出部によって、中央演算処理装置と主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生が検出され、キャッシュデータ検出部によって、キャッシュ装置にデータを格納したことが検出される。そして、ストール通知部によって、アドレス情報検出部により検出されたアドレス情報と、キャッシュミス検出部での検出結果と、キャッシュデータ検出部での検出結果とに基づいて、主記憶装置にアクセスすることを表すメモリストールの開始と終了とが通知される。命令検出部によって、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる後続命令が存在するか否かが検出される。クロック切り替え判断部によって、ストール通知部からメモリストールの開始と終了との通知が受け取られ、メモリストール発生中であるか否かが判定される。ここで、メモリストール発生中であると判定された場合、命令検出部の検出結果に基づいて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかが判断される。そして、クロック切り替え部によって、クロック切り替え判断部による判断に従って、クロック信号が切り替えられる。
本発明によれば、メモリストール発生中において、現在実行中の命令に後続する後続命令が順序に関係なく実行できる場合は、中央演算処理装置に供給するクロック信号のクロック周波数を低下させ、後続の命令が順序に関係なく実行できない場合は、中央演算処理装置に供給するクロック信号を停止させるので、性能を低下させることなく、消費電力を低減することができる。
本発明の目的、特徴及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
本発明の実施の形態1における計算機システムを有する情報処理装置のハードウェア構成を示すブロック図である。 本発明の実施の形態1における計算機システムの構成を示すブロック図である。 本発明の実施の形態1におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。 図3のステップS106におけるクロック切り替え判断部によるクロック切り替え判断処理の流れを示すフローチャートである。 図3のステップS107におけるクロック切り替え部によるクロック切り替え処理の流れを示すフローチャートである。 本発明の実施の形態2における計算機システムの構成を示すブロック図である。 本発明の実施の形態2におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。 図7のステップS208におけるクロック切り替え判断部によるクロック切り替え判断処理の流れを示すフローチャートである。 本発明の実施の形態3における集積回路の構成を示すブロック図である。
以下添付図面を参照しながら、本発明の実施の形態について説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
(実施の形態1)
図1は、本発明の実施の形態1における情報処理装置のハードウェア構成を示すブロック図である。情報処理装置1は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置の一例は、代表的には、PDA、移動体通信端末、デジタルカメラ及び携帯オーディオ機器などの携帯型の電子機器である。携帯型の電子機器では、バッテリ駆動などで動作することから、省電力化が特に要求されるため、特に有用である。
情報処理装置1は、計算機システム10、バス11、主記憶装置12、タイマー回路14、割込コントローラ15、表示装置16、入力装置17及び通信装置18を備えている。計算機システム10、主記憶装置12、タイマー回路14、割込コントローラ15、表示装置16、入力装置17及び通信装置18は、バス11を通じて互いに接続されている。また、必要に応じて、バス11には、ハードディスク装置13及び読取装置19を接続することが可能となっている。ハードディスク装置13、読取装置19、表示装置16及び入力装置17は、それぞれ、インタフェース(I/F)を通じてバス11に接続される。
計算機システム10は、CPU(Central Processing Unit;中央演算処理部)20、キャッシュ装置21、メモリコントローラ22及びクロック制御装置23を備えている。なお、計算機システム10は、望ましくは、単一の半導体基板に作り込んだLSI(Large Scale Integrated circuit)等の集積回路として構成される。また、このLSI上に、割り込みコントローラ15など他の構成要素を備えてもよい。この計算機システム10の詳細については、図2を用いて後で詳細を説明する。
主記憶装置12は、ROM(Read Only Memory)及びRAM(Random Access Memory)を備えている。ROMは、CPU20の動作を規定するコンピュータプログラムを記憶している。コンピュータプログラムは、ハードディスク装置13に記憶させることもできる。CPU20は、ROM又はハードディスク装置13が格納するコンピュータプログラムを、必要に応じてRAMに書き込みつつ、コンピュータプログラムが規定する処理を実行する。RAMは、CPU20が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。
なお、主記憶装置12は、後述するキャッシュ装置21と比べて、アクセス速度が遅いが、大容量のデータを格納することが可能である。また、ROMには、フラッシュROMのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリ及び記憶媒体も含まれる。RAMには、電源を切ると記憶内容が保持されない揮発性のメモリ及び記憶媒体が含まれる。
ハードディスク装置13は、内蔵する不図示のハードディスクにコンピュータプログラム或いはデータを書き込むとともに、内蔵する不図示のハードディスクからコンピュータプログラム或いはデータを読み出す。
割込コントローラ15は、タイマー回路14、入力装置17、ネットワークデバイスとしての通信装置18、ハードディスク装置13及び読取装置19等から送られる割込要求信号を、CPU20へ中継する。各装置からの割込要求には優先度が付けられている。割り込みコントローラ15は、同時に複数の装置から割込要求が発生した場合には、それらの割込要求を優先度に応じて調停する機能を有している。
表示装置16は、例えばLCD(Liguid Crystal Display;液晶表示器)であり、データ及び画像等を画面に表示したり、データ等を音声で出力したりする。
入力装置17は、例えば、PDAに配列されたキーボード、携帯電話機に配列された入力ボタン、或いは着脱自在のマウスであり、ユーザの操作によりデータ等を入力する。タイマー回路14は、一定の周期でタイマー割込信号を出力する。
通信装置18は、電話回線、ネットワーク線、無線又は赤外線等の通信回線を通じて、外部と自身との間で、コンピュータプログラム或いはデータを交換する。
読取装置19は、コンピュータ読み取り可能な記録媒体(例えば、CD、DVD又はメモリカードなど)24に記録されたコンピュータプログラム(クロック制御プログラム)或いはデータを読み取る。
以上のように、情報処理装置1は、コンピュータとして構成されている。上記コンピュータプログラムは、主記憶装置12、不図示のフレキシブルディスク及びCD−ROM等のプログラム記録媒体を通じて供給することも、電気通信回線等の伝送媒体を通じて供給することも可能である。例えば、プログラム記録媒体としてCD−ROMに記録されたコンピュータプログラムは、読取装置19を情報処理装置1へ接続することにより、読み出すことができ、主記憶装置12のRAM或いはハードディスク装置13に格納することができる。
プログラム記録媒体としてROMによってコンピュータプログラムが供給される場合には、当該ROMを主記憶装置12に搭載することにより、CPU20は上記コンピュータプログラムに従った処理を実行可能となる。電気通信回線等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置18を通じて受信され、例えば、主記憶装置12のRAM或いはハードディスク装置13に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であっても良い。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
図2は、本発明の実施の形態1における計算機システムの構成を示すブロック図である。
図2において、計算機システム100は、前述した図1の計算機システム10に相当する。また、主記憶装置12は、図1の主記憶装置12を示している。
計算機システム100は、CPU200、L2キャッシュ装置210、メモリコントローラ220及びクロック制御装置230を備えており、図1のバス11を介して、主記憶装置12と接続している。なお、図2では、バス11を省略している。
CPU200は、図1のCPU20に相当しており、CPU200を動作するクロック信号を受け付けるクロック入力部201、CPUコア部202及びL1キャッシュ装置203を備えている。CPU200は、主記憶装置12が格納した命令およびデータを参照して、計算機システム100で必要な処理を実行する。
クロック入力部201は、CPU200の外部から供給されたクロック信号を受け付け、受け付けたクロック信号をCPUコア部202及びL1キャッシュ装置203に供給する。
CPUコア部202は、クロック入力部201によって供給されたクロック信号に同期して動作する。CPUコア部202は、計算機システム100における処理を実行する本体である。CPUコア部202は、L1キャッシュ装置203、L2キャッシュ装置210、或いは、外部に接続された主記憶装置12に格納された命令をフェッチした後、当該命令をデコードし、デコード結果に対応する命令を実行する。また、CPUコア部202は、デコード結果に対応した命令に従って、L1キャッシュ装置203、L2キャッシュ装置210、或いは、外部に接続された主記憶装置12に格納されたデータを読み出し、或いは、L1キャッシュ装置203、L2キャッシュ装置210、或いは、外部に接続された主記憶装置12にデータを書き込む。
L1キャッシュ装置203は、クロック入力部201によって供給されたクロック信号に同期して動作する。L1キャッシュ装置203は、CPUコア部202がアクセスするデータを、主記憶装置12におけるアドレスを表すアドレス情報に対応付けて一時的に格納する。そして、CPUコア部202が主記憶装置12にアクセスする際、アドレス情報に対応するデータがL1キャッシュ装置203に格納されている場合、CPUコア部202は、L1キャッシュ装置203が格納しているデータにアクセスする。これにより、主記憶装置12にアクセスする場合に比べて、アクセス時間を大幅に短縮させることができる。また、外部に接続された主記憶装置12にアクセスするための消費電力も削減することができる。
一方、CPUコア部202が主記憶装置12にアクセスする際、アドレス情報に対応するデータがL1キャッシュ装置203に格納されていない場合、CPUコア部202は、L2キャッシュ装置210にアクセスし、アドレス情報に対応するデータを探し始める。
L2キャッシュ装置210は、図1のキャッシュ装置21に相当しており、CPU200と主記憶装置12との間に配置されている。L2キャッシュ装置210は、CPUコア部202がアクセスするデータを、主記憶装置12におけるアドレスを表すアドレス情報に対応付けて一時的に格納する。そして、CPUコア部202が主記憶装置12にアクセスする際、アドレス情報に対応するデータがL2キャッシュ装置210に格納されている場合、CPUコア部202は、L2キャッシュ装置210が格納しているデータにアクセスする。これにより、主記憶装置12にアクセスする場合に比べて、アクセス時間を大幅に短縮させることができる。また、外部に接続された主記憶装置12にアクセスするための消費電力も削減することができる。
一方、CPUコア部202が主記憶装置12にアクセスする際、アドレス情報に対応するデータがL2キャッシュ装置210に格納されていない場合、CPUコア部202は、メモリコントローラ220を通じて、主記憶装置12が格納しているデータにアクセスする。
メモリコントローラ220は、図1のメモリコントローラ22に相当しており、外部に接続された主記憶装置12にアクセスする、計算機システム100内の回路と接続される。例えば、CPU200は、L2キャッシュ装置210を通して、メモリコントローラ220と接続する。メモリコントローラ220は、動作クロックの異なる、外部の主記憶装置12とのインタフェースの役割を有する。また、メモリコントローラ220に接続される主記憶装置12は、1つでもそれ以上でも良い。更に、メモリコントローラ220と接続される、外部に接続された主記憶装置12にアクセスする、計算機システム100内の回路は、1つでもそれ以上でも良い。メモリコントローラ220は、複数接続された、計算機システム100内の回路からのアクセスを調停する役割を有する。
クロック制御装置230は、図1のクロック制御装置23に相当しており、キャッシュミス信号検出部231、アドレス情報検出部232、キャッシュデータ検出部233、ストール判断部234、命令検出部235、クロック切り替え判断部236及びクロック切り替え部237を備えている。
キャッシュミス信号検出部231は、L2キャッシュ装置210におけるキャッシュミスの発生を検出する。キャッシュミス信号検出部231は、L2キャッシュ装置210におけるキャッシュミスの発生を通知する信号(キャッシュミス信号)を検出することにより、L2キャッシュ装置210におけるキャッシュミスの発生を検出する。CPUコア部202が主記憶装置12のデータにアクセスする際、アクセス対象のアドレス情報に対応するデータを、L2キャッシュ装置210が格納してない場合、L2キャッシュ装置210は、キャッシュミス信号と、キャッシュミスが発生したデータに対応するアドレス情報とをキャッシュミス信号検出部231へ出力する。キャッシュミス信号検出部231は、キャッシュミス信号を検出し、キャッシュミスが発生したデータに対応するアドレス情報をストール判断部234に通知する。
アドレス情報検出部232は、CPUコア部202が、デコードした命令にしたがって、L1キャッシュ装置203、L2キャッシュ装置210、或いは、外部に接続された主記憶装置12に格納されているデータを読み出す場合、或いは、L1キャッシュ装置203、L2キャッシュ装置210、或いは、外部に接続された主記憶装置12にデータを書き込む場合に、CPUコア部202から発行されるアドレス情報を検出する。また、アドレス情報検出部232は、検出したアドレス情報をストール判断部234に通知する。
キャッシュデータ検出部233は、L2キャッシュ装置210にデータを格納したことを検出する。キャッシュデータ検出部233は、L2キャッシュ装置210にデータを格納したことを検出すると、格納されたデータの主記憶装置12におけるアドレスを表すアドレス情報をストール判断部234に通知する。
キャッシュデータ検出部233は、CPUコア部202が、メモリコントローラ220を介して、外部に接続された主記憶装置12に格納されたデータを読み出した際、或いは、主記憶装置12にデータを書き込んだ際に、L2キャッシュ装置210にデータを格納したことと、格納されたデータに対応付けられた、主記憶装置12におけるアドレス情報を検出する。また、キャッシュデータ検出部233は、検出したアドレス情報を、ストール判断部234に通知する。
ストール判断部234は、アドレス情報検出部232によって検出されたアドレス情報と、キャッシュミス信号検出部231での検出結果と、キャッシュデータ検出部233での検出結果とに基づいて、主記憶装置12にアクセスすることを表すメモリストールの開始と終了とを通知する。ストール判断部234は、アドレス情報検出部232によって通知されたアドレス情報と、キャッシュミス信号検出部231によって通知されたアドレス情報とに基づいて、メモリストールの開始を判断する。また、ストール判断部234は、アドレス情報検出部232によって通知されたアドレス情報と、キャッシュデータ検出部233によって通知されたアドレス情報とに基づいて、メモリストールの終了を判断する。
ストール判断部234は、アドレス情報検出部232によって通知されたアドレス情報と、キャッシュミス信号検出部231によって通知されたアドレス情報とが一致する場合、メモリストールが開始したことを表すストール開始信号をクロック切り替え判断部236に通知する。また、ストール判断部234は、アドレス情報検出部232によって通知されたアドレス情報と、キャッシュデータ検出部233によって通知されたアドレス情報とが一致する場合、メモリストールが終了したことを表すストール終了信号をクロック切り替え判断部236に通知する。
すなわち、ストール判断部234は、アドレス情報検出部232によって検出されたアドレス情報と、キャッシュミス信号検出部231によって検出されたアドレス情報とを受信し、受信したアドレス情報を照合する。照合した結果、アドレス情報が一致した場合、ストール判断部234は、外部に接続された主記憶装置12に格納されているデータの読み出しが開始されたこと、或いは、主記憶装置12へのデータの書き込みが開始されたことを判断する。つまり、ストール判断部234は、CPUコア部202がデコードした命令が、メモリストールを開始したと判断する。
また、ストール判断部234は、CPUコア部202がデコードした命令が、メモリストールを開始したと判断した後、キャッシュデータ検出部233によって検出されたアドレス情報を受信する。そして、ストール判断部234は、キャッシュデータ検出部233によって検出されたアドレス情報と、アドレス情報検出部232によって検出されたアドレス情報とを照合する。照合した結果、アドレス情報が一致した場合、ストール判断部234は、外部に接続された主記憶装置12に格納されているデータの読み出しが終了したこと、或いは、主記憶装置12へのデータの書き込みが終了したことを判断する。つまり、ストール判断部234は、CPUコア部202がデコードした命令によって発生したメモリストールが終了したと判断する。
ストール判断部234は、判断結果に基づいて、メモリストールの開始を示すストール開始信号、または、メモリストールの終了を示すストール終了信号を、クロック切り替え判断部236に通知する。
命令検出部235は、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる後続命令が存在するか否かを検出する。
命令検出部235は、CPUコア部202がデコードした命令を、順に格納し、各命令の後続命令のうち、順序に関係なく順序外(Out of order)で実行することができる命令数を探索する。例えば、1番目の命令が、レジスタAの内容を更新する命令である場合、当該レジスタAの結果を用いる命令が後続命令の中にあるか否かを探索する。探索した結果、3番目の命令が、レジスタAの内容を演算に用いる場合、1番目の命令は、3番目の命令とデータ依存関係があることがわかる。この場合、2番目の命令は、1番目の命令とデータ依存関係がないので、1番目の命令の終了を待たなくても、実行することができる。よって、1番目の命令が順序外で実行できる後続命令の数は1となる。
このように、命令検出部235は、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、現在実行中の命令の実行結果を用いることなく実行可能な後続命令が存在するか否かを検出する。
命令検出部235は、順序に関係なく実行できる後続命令が存在する場合、順序に関係なく実行できる後続命令の数を表す順序外命令数をクロック切り替え判断部236へ通知する。すなわち、命令検出部235は、CPUコア部202から、CPUコア部202が現在実行している命令に関する情報を受信し、現在実行している命令に対して、順序外で実行できる後続命令の数(以下、“順序外命令数”と略す)をクロック切り替え判断部236に通知する。
クロック切り替え部237は、CPU200に供給する、高クロック信号238と、低クロック信号239とを受信する。なお、高クロック信号238及び低クロック信号239は、不図示のクロック信号生成部によって生成される。低クロック信号239は、高クロック信号238よりもクロック周波数が低いクロック信号である。
クロック切り替え部237は、クロック切り替え判断部236による判断に従って、クロック信号を切り替える。クロック切り替え部237は、クロック切り替え判断部236から、低クロック信号239に切り替えることを表す低クロック切り替え信号を受信していない場合、高クロック信号238をクロック入力部201に送信する。また、クロック切り替え部237は、クロック切り替え判断部236から低クロック切り替え信号を受信した場合、低クロック信号239をクロック入力部201に送信する。さらに、クロック切り替え部237は、クロック切り替え判断部236から、クロック信号を停止することを表すクロック停止信号を受信した場合、クロック入力部201に供給するクロック信号を停止する。
クロック切り替え判断部236は、ストール判断部234からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、命令検出部235の検出結果に基づいて、CPU200に供給するクロック信号を低クロック信号239に切り替えるか、停止するかを判断する。
クロック切り替え判断部236は、命令検出部235によって順序に関係なく実行できる後続命令が存在することが検出された場合、CPU200に供給するクロック信号を低クロック信号239に切り替えると判断し、命令検出部235によって順序に関係なく実行できる後続命令が存在しないことが検出された場合、CPU200に供給するクロック信号を停止すると判断する。
クロック切り替え判断部236は、ストール判断部234から、ストール開始信号またはストール終了信号を受信し、メモリストール発生中であるか否かを判定する。クロック切り替え判断部236は、ストール判断部234によってストール開始信号が通知されてからストール終了信号が通知されるまでの間、メモリストール発生中であると判断する。
また、クロック切り替え判断部236は、命令検出部235から、CPUコア部202が現在実行している命令に対する、順序外で実行できる後続命令の数に関する情報を受信する。クロック切り替え判断部236は、ストール開始信号を受信していないため、メモリストールを起こしていないと判定した場合、何もしない。そのため、クロック切り替え部237は、現在送信中のクロック信号である高クロック信号をそのままクロック入力部201に送信し続ける。
クロック切り替え判断部236は、命令検出部235によって通知された順序外命令数に応じて、CPU200に供給するクロック信号を低クロック信号239に切り替える周期を決定する。
クロック切り替え判断部236は、低クロックサイクルカウンタ251を備える。低クロックサイクルカウンタ251には、命令検出部235によって検出された順序外命令数が設定される。クロック切り替え判断部236は、命令検出部235によって順序外命令数が通知されると、当該順序外命令数を低クロックサイクルカウンタ251の値に設定する。
クロック切り替え判断部236は、メモリストール発生中であると判定した場合、低クロックサイクルカウンタ251の値が0であるか否かを判断する。クロック切り替え判断部236は、低クロックサイクルカウンタ251の値が0であると判断した場合、CPU200に供給するクロック信号を停止させることを表すクロック停止信号をクロック切り替え部237に送出する。クロック切り替え判断部236は、低クロックサイクルカウンタ251の値が0でないと判断した場合、CPU200に供給するクロック信号を低クロック信号239に切り替えることを表す低クロック切り替え信号をクロック切り替え部237に送出した後、低クロックサイクルカウンタ251の値をデクリメントする。
クロック切り替え判断部236は、メモリストール発生中でないと判定した場合、低クロックサイクルカウンタ251の値をリセットした後、送出中のクロック停止信号又は低クロック切り替え信号を停止する。低クロック切り替え信号が停止されると、クロック切り替え部237は、出力するクロック信号を低クロック信号239から高クロック信号238に切り替える。また、クロック停止信号が停止されると、クロック切り替え部237は、停止していた高クロック信号238を出力する。
メモリストールを起こしていると判定した場合、クロック切り替え判断部236は、CPUコア部202が現在実行している命令に対する、順序外で実行できる後続命令の数の情報に基づいて、CPU200に供給するクロック信号を低クロック信号239に切り替えるか、停止するかを判別する。なお、クロック切り替え判断部236は、順序外命令数が0以外である場合、すなわち後続命令が順序外で実行できる場合、CPU200に供給するクロック信号を低クロック信号239に切り替えると判別する。また、クロック切り替え判断部236は、順序外命令数が0である場合、すなわち後続命令が順序外で実行できない場合、CPU200に供給するクロック信号を停止すると判別する。
低クロック信号239に切り替えると判別した場合、クロック切り替え判断部236は、クロック信号を低クロック信号239に切り替えるための低クロック切り替え信号をクロック切り替え部237に送信する。一方、クロック信号を停止すると判別した場合、クロック切り替え判断部236は、クロック信号を停止させるためのクロック停止信号をクロック切り替え部237に送信する。
以上の構成により、本実施の形態のクロック制御装置は、CPU200がメモリストールを発生するとき、後続命令が順序外で実行できる場合は、CPU200に供給するクロック信号を低クロック信号239に切り替えることができ、後続命令が順序外で実行できない場合は、CPU200に供給するクロック信号を停止することができる。これにより、メモリストールの発生している期間、計算機システムの性能低下を防止すると共に、消費電力を低減することができる。
なお、本実施の形態1において、計算機システム100がクロック制御装置の一例に相当し、L2キャッシュ装置210がキャッシュ装置の一例に相当し、キャッシュミス信号検出部231がキャッシュミス検出部の一例に相当し、ストール判断部234がストール通知部の一例に相当し、低クロックサイクルカウンタ251がカウンタの一例に相当する。
次に、本発明の実施の形態1におけるクロック制御装置におけるクロック制御処理について説明する。図3は、本発明の実施の形態1におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。
まず、アドレス情報検出部232は、CPU200から主記憶装置12へのアクセスを検出し、主記憶装置12におけるアクセス先のアドレスを表すアドレス情報を検出する(ステップS101)。アドレス情報検出部232は、検出したアドレス情報を、ストール判断部234に通知する。
次に、キャッシュミス信号検出部231は、L2キャッシュ装置210においてキャッシュミスが検出されたか否かを判断する(ステップS102)。ここで、キャッシュミスが検出されないと判断された場合(ステップS102でNO)、ステップS101の処理へ戻る。
一方、キャッシュミスが検出されたと判断された場合(ステップS102でYES)、キャッシュミス信号検出部231は、キャッシュミスしたデータの主記憶装置12におけるアドレスを表すアドレス情報をストール判断部234に通知する(ステップS103)。
次に、ストール判断部234は、アドレス情報検出部232によって通知されたアドレス情報と、キャッシュミス信号検出部231によって通知されたアドレス情報とが一致するか否かを判断する(ステップS104)。ここで、アドレス情報が一致しないと判断された場合(ステップS104でNO)、ストール判断部234は、メモリストールが発生していないと判断し、クロック制御処理を終了する。
一方、アドレス情報が一致すると判断された場合(ステップS104でYES)、ストール判断部234は、メモリストールが発生したと判断し、ストール開始信号をクロック切り替え判断部236に通知する(ステップS105)。
次に、クロック切り替え判断部236は、CPU200に供給するクロック信号を低クロック信号239に切り替えるか、停止するかを判断するクロック切り替え判断処理を実行する(ステップS106)。なお、ステップS106におけるクロック切り替え判断処理の詳細ついては、図4を用いて後述する。
次に、クロック切り替え部237は、クロック切り替え判断部236による判断に従って、CPU200に供給されるクロック信号を切り替えるクロック信号切り替え処理を実行する(ステップS107)。なお、ステップS107におけるクロック切り替え処理の詳細ついては、図5を用いて後述する。
次に、キャッシュデータ検出部233は、L2キャッシュ装置210においてデータ(キャッシュデータ)が検出されたか否かを判断する(ステップS108)。ここで、キャッシュデータが検出されていないと判断された場合(ステップS108でNO)、ステップS106の処理へ戻る。
一方、キャッシュデータが検出されたと判断された場合(ステップS108でYES)、キャッシュデータ検出部233は、L2キャッシュ装置210に格納されたデータの主記憶装置12におけるアドレスを表すアドレス情報をストール判断部234に通知する(ステップS109)。
次に、ストール判断部234は、アドレス情報検出部232によって通知されたアドレス情報と、キャッシュデータ検出部233によって通知されたアドレス情報とが一致するか否かを判断する(ステップS110)。ここで、アドレス情報が一致しないと判断された場合(ステップS110でNO)、ステップS106の処理へ戻る。なお、アドレス情報が一致しないと判断された場合、クロック制御処理を終了してもよい。
一方、アドレス情報が一致すると判断された場合(ステップS110でYES)、ストール判断部234は、メモリストールが終了したと判断し、ストール終了信号をクロック切り替え判断部236に通知し(ステップS111)、ステップS106の処理へ戻る。
続いて、図3のステップS106におけるクロック切り替え判断部236によるクロック切り替え判断処理について説明する。図4は、図3のステップS106におけるクロック切り替え判断部236によるクロック切り替え判断処理の流れを示すフローチャートである。なお、ここでは、低クロックサイクルカウンタ251の初期値は0で、処理を開始するものとする。
クロック切り替え判断部236は、ストール判断部234から受信した、ストール開始信号とストール終了信号とに基づいて、現在、CPUコア部202がメモリストール発生中であるか否かを判定する(ステップS1)。すなわち、クロック切り替え判断部236は、ストール判断部234からストール開始信号を受信した場合、CPUコア部202がメモリストール発生中であると判定し、ストール判断部234からストール終了信号を受信した場合、メモリストール発生中でないと判定する。
メモリストールが起きてない場合、すなわちメモリストール発生中でないと判定された場合(ステップS1でNO)、クロック切り替え判断部236は、低クロックサイクルカウンタ251をリセット、すなわち低クロックサイクルカウンタ251の値に0をセットする(ステップS2)。次に、クロック切り替え判断部236は、クロック切り替え部237に送出している信号、すなわちクロック停止信号又は低クロック切り替え信号を停止する(ステップS3)。その後、図3のステップS107の処理へ移行する。
メモリストールの発生している期間である場合、すなわちメモリストール発生中であると判定された場合(ステップS1でYES)、クロック切り替え判断部236は、低クロックサイクルカウンタ251の値が0であるか否かを判定する(ステップS4)。
低クロックサイクルカウンタ251の値が0でないと判定された場合(ステップS4でNO)、クロック切り替え判断部236は、現在実行中の命令に対して順序外で実行できる命令があると判断し、クロック切り替え部237に、低クロック切り替え信号を送出する(ステップS9)。次に、クロック切り替え判断部236は、低クロックサイクルカウンタ251をデクリメントする(ステップS10)。その後、図3のステップS107の処理へ移行する。
一方、低クロックサイクルカウンタ251の値が0であると判定された場合(ステップS4でYES)、クロック切り替え判断部236は、命令検出部235から順序外命令数を受信する(ステップS5)。次に、クロック切り替え判断部236は、低クロックサイクルカウンタ251の値に、受信した順序外命令数の値をセットする(ステップS6)。
次に、クロック切り替え判断部236は、低クロックサイクルカウンタ251の値が0であるか否かを判定する(ステップS7)。低クロックサイクルカウンタ251の値が0でないと判定された場合(ステップS7でNO)、現在実行中の命令に対して順序外で実行できる命令があることを表しているため、クロック切り替え判断部236は、クロック切り替え部237に、低クロック切り替え信号を送出する(ステップS9)。次に、クロック切り替え判断部236は、低クロックサイクルカウンタ251をデクリメントする(ステップS10)。その後、ステップS1の処理へ戻り、ステップS1以降の処理を繰り返す。これにより、クロック切り替え判断部236は、低クロックサイクルカウンタ251が0になるまで、低クロック切り替え信号を送出し続ける。
低クロックサイクルカウンタ251の値が0であると判定された場合(ステップS7でYES)、後続の命令は順序外で実行できない命令であるため、クロック切り替え判断部236は、クロック切り替え部237にクロック停止信号を送出する(ステップS8)。その後、図3のステップS107の処理へ移行する。これにより、クロック切り替え判断部236は、メモリストールの発生している期間中、クロック停止信号を送出し続ける。
これにより、クロック切り替え部237は、ストール開始信号を受信してからストール終了信号を受信するまでの間を、メモリストールの発生している期間と判断し、後続命令が順序外で実行できる場合は、CPU200に供給するクロック信号を低クロック信号239に切り替える。また、クロック切り替え部237は、後続命令が順序外で実行できない場合は、CPU200に供給するクロック信号を停止する。その後、ストール終了信号を受信すると、クロック切り替え部237は、メモリストールが起きていないと判断し、通常の高クロック信号238がCPU200に供給されることになる。
続いて、図3のステップS107におけるクロック切り替え部237によるクロック切り替え処理について説明する。図5は、図3のステップS107におけるクロック切り替え部237によるクロック切り替え処理の流れを示すフローチャートである。
まず、クロック切り替え部237は、低クロック切り替え信号又はクロック停止信号をクロック切り替え判断部236から受信中であるか否かを判断する(ステップS11)。ここで、低クロック切り替え信号又はクロック停止信号を受信していないと判断された場合(ステップS11でNO)、クロック切り替え部237は、高クロック信号238をCPU200のクロック入力部201へ送出する(ステップS12)。
一方、低クロック切り替え信号又はクロック停止信号を受信中であると判断された場合(ステップS11でYES)、クロック切り替え部237は、低クロック切り替え信号を受信しているか否かを判断する(ステップS13)。ここで、低クロック切り替え信号を受信していると判断された場合(ステップS13でYES)、クロック切り替え部237は、低クロック信号239をCPU200のクロック入力部201へ送出する(ステップS14)。
一方、低クロック切り替え信号を受信していないと判断された場合(ステップS13でNO)、クロック切り替え部237は、クロック停止信号を受信していると判断し、クロック信号を停止する(ステップS15)。
以上により、CPU200がメモリストールを起こしているときに、後続命令が順序外で実行できる場合、CPU200に供給するクロック信号が低クロック信号239に切り替えられ、後続命令が順序外で実行できない場合、CPU200に供給するクロック信号が停止されるので、メモリストールの発生している間、性能を低下させることなく、低消費電力を実現することができる。
(実施の形態2)
図6は、本発明の実施の形態2における計算機システムの構成を示すブロック図である。なお、実施の形態2の情報処理装置における計算機システム以外の構成は、図1に示す実施の形態1の情報処理装置の構成と同じであるので説明を省略する。図6において、図2と同じ構成要素については同じ符号を用い、説明を省略する。
図6において、計算機システム101は、前述した図1の計算機システム10に相当する。また、主記憶装置12は、図1の主記憶装置12に相当する。
計算機システム101は、CPU200、L2キャッシュ装置210、メモリコントローラ220及びクロック制御装置240を備えており、図1のバス11を介して、主記憶装置12と接続している。クロック制御装置240以外の構成は、図2と同様の構成である。
クロック制御装置240は、図1のクロック制御装置23に相当しており、キャッシュミス信号検出部231、アドレス情報検出部242、キャッシュデータ検出部233、ストール判断部234、命令検出部235、プリフェッチバッファ検出部241、クロック切り替え判断部243及びクロック切り替え部237を備えている。プリフェッチバッファ検出部241、アドレス情報検出部242及びクロック切り替え判断部243以外の構成は、実施の形態1で既に説明したため、異なる構成要素についてのみ、詳細を説明する。
CPUコア部202は、プリフェッチバッファ204を備える。プリフェッチバッファ204は、CPUコア部202が主記憶装置12からフェッチした命令を格納する。
プリフェッチバッファ検出部241は、CPUコア部202及びクロック切り替え判断部243と接続されている。プリフェッチバッファ検出部241は、CPUコア部202が主記憶装置12からフェッチした命令を格納するためのプリフェッチバッファ204が空であることを検出する。プリフェッチバッファ検出部241は、プリフェッチバッファ204が空である場合、クロック切り替え判断部243にプリフェッチバッファ空信号を、CPUコア部202がプリフェッチバッファ204へ命令を格納するサイクル分、送信する。
アドレス情報検出部242は、CPUコア部202及びストール判断部234と接続される。アドレス情報検出部242は、CPUコア部202がフェッチする命令のアドレス情報を検出し、検出したアドレス情報を、ストール判断部234に通知する。なお、アドレス情報検出部242によって検出されるアドレス情報は、CPUコア部202によってアクセスされる主記憶装置12におけるアドレスを表す。
クロック切り替え判断部243は、ストール判断部234、命令検出部235、クロック切り替え部237及びプリフェッチバッファ検出部241と接続されている。クロック切り替え判断部243は、ストール判断部234から、ストール開始信号またはストール終了信号を受信し、メモリストール発生中であるか否かを判定する。また、クロック切り替え判断部243は、命令検出部235から、CPUコア部202が現在実行している命令に対する、順序外で実行できる後続命令の数に関する情報を受信する。さらに、クロック切り替え判断部243は、プリフェッチバッファ検出部241から、プリフェッチバッファ空信号を受信する。
クロック切り替え判断部243は、プリフェッチバッファ検出部241によってプリフェッチバッファ204が空であることが検出された場合、CPU200に供給するクロック信号を低クロック信号239に切り替えると判断する。また、クロック切り替え判断部243は、プリフェッチバッファ検出部241によってプリフェッチバッファ204が空でないことが検出された場合、メモリストール発生中であるか否かを判定する。
クロック切り替え判断部243は、プリフェッチバッファ検出部241から、プリフェッチバッファ空信号を受信している間、CPU200に供給するクロック信号を低クロック信号239に切り替えると判断し、低クロック切り替え信号をクロック切り替え部237に送信する。この場合、クロック切り替え判断部243は、メモリストール発生中であるか否かに関わらず、プリフェッチバッファ空信号を受信している間、CPU200に供給するクロック信号を低クロック信号239に切り替えると判断する。
また、プリフェッチバッファ空信号を受信していない間で、ストール開始信号を受信していないため、メモリストールを起こしていないと判定した場合、クロック切り替え判断部243は、何もしない。そのため、クロック切り替え部237は、現在送信中のクロック信号である高クロック信号をそのままクロック入力部201に送信し続ける。
また、プリフェッチバッファ空信号を受信していない間で、メモリストールを起こしていると判定した場合、クロック切り替え判断部243は、CPUコア部202が現在実行している命令に対する、順序外で実行できる後続命令の数に関する情報に基づいて、CPU200に供給するクロック信号を低クロック信号239に切り替えるか、停止するかを判別する。なお、クロック切り替え判断部243は、順序外命令数が0以外である場合、すなわち後続命令が順序外で実行できる場合、CPU200に供給するクロック信号を低クロック信号239に切り替えると判別する。また、クロック切り替え判断部243は、順序外命令数が0である場合、すなわち後続命令が順序外で実行できない場合、CPU200に供給するクロック信号を停止すると判別する。
低クロック信号239に切り替えると判別した場合、クロック切り替え判断部243は、クロック信号を低クロック信号239に切り替えるための低クロック切り替え信号をクロック切り替え部237に送信する。一方、クロック信号を停止すると判別した場合、クロック切り替え判断部243は、クロック信号を停止させるためのクロック停止信号をクロック切り替え部237に送信する。
なお、クロック切り替え判断部243は、低クロックサイクルカウンタ251を備える。低クロックサイクルカウンタ251については、実施の形態1で既に説明しているので、ここでは説明を省略する。
次に、本発明の実施の形態2におけるクロック制御装置におけるクロック制御処理について説明する。図7は、本発明の実施の形態2におけるクロック制御装置におけるクロック制御処理の流れを示すフローチャートである。
なお、図7のステップS201〜S205,S209〜S213の処理は、図3におけるステップS101〜S105,S107〜S111の処理と同じであるので、詳細な説明を省略する。
次に、プリフェッチバッファ検出部241は、プリフェッチバッファ204が空であるか否かを判断する(ステップS206)。プリフェッチバッファ204が空でないと判断された場合(ステップS206でNO)、ステップS208の処理へ移行する。一方、プリフェッチバッファ204が空であると判断された場合(ステップS206でYES)、プリフェッチバッファ検出部241は、プリフェッチバッファ空信号をクロック切り替え判断部243に通知する。
次に、クロック切り替え判断部243は、CPU200に供給するクロック信号を低クロック信号239に切り替えるか、停止するかを判断するクロック切り替え判断処理を実行する(ステップS208)。なお、ステップS208におけるクロック切り替え判断処理の詳細ついては、図8を用いて後述する。
続いて、図7のステップS208におけるクロック切り替え判断部243によるクロック切り替え判断処理について説明する。図8は、図7のステップS208におけるクロック切り替え判断部243によるクロック切り替え判断処理の流れを示すフローチャートである。なお、ここでは、低クロックサイクルカウンタ251の初期値は0で、処理を開始するものとする。
まず、クロック切り替え判断部243は、プリフェッチバッファ検出部241からプリフェッチバッファ空信号を受信したか否かを判断する(ステップS21)。ここで、プリフェッチバッファ空信号を受信したと判断された場合(ステップS21でYES)、クロック切り替え判断部243は、クロック切り替え部237に、低クロック切り替え信号を送出する(ステップS30)。
一方、プリフェッチバッファ空信号を受信していないと判断された場合(ステップS21でNO)、クロック切り替え判断部243は、ストール判断部234から受信した、ストール開始信号とストール終了信号とに基づいて、現在、CPUコア部202がメモリストール発生中であるか否かを判定する(ステップS22)。なお、ステップS22〜S31までの処理は、図4におけるステップS1〜S10までの処理と同じであるので、詳細な説明を省略する。
ステップS24において、クロック切り替え判断部243は、クロック停止信号又は低クロック切り替え信号を停止した後、図7のステップS209の処理へ移行する。また、ステップS29において、クロック切り替え判断部243は、クロック切り替え部237にクロック停止信号を送出した後、図7のステップS209の処理へ移行する。さらに、ステップS31において、クロック切り替え判断部243は、低クロックサイクルカウンタ251をデクリメントした後、図7のステップS209の処理へ移行する。
以上により、本実施の形態2のクロック制御装置は、CPU200のプリフェッチバッファ204が空であるとき、CPU200に供給するクロック信号を低クロック信号239に切り替え、性能を低下させることなく、低消費電力を実現することができる。
また、プリフェッチバッファ204に後続の命令が格納された後は、実施の形態1と同様に、CPU200がメモリストールを起こしており、後続命令が順序外で実行できる場合、CPU200に供給するクロック信号を低クロック信号239に切り替え、後続の命令を順序外で実行する。また、CPU200がメモリストールを起こしているが、後続命令が順序外で実行できない場合、CPU200に供給するクロック信号を停止する。これにより、性能を低下させることなく、低消費電力を実現することができる。
(実施の形態3)
図9は、本発明の実施の形態3における集積回路102の構成を示すブロック図である。図9に示す集積回路102は、CPU200、L2キャッシュ装置210、メモリコントローラ220及びクロック制御装置330を備えている。なお、図9に示す実施の形態3の集積回路102において、実施の形態1と同じ構成については、同じ符号を付し、説明を省略する。
クロック制御装置330は、キャッシュミス信号検出回路331、アドレス情報検出回路332、キャッシュデータ検出回路333、ストール判断回路334、命令検出回路335、クロック切り替え判断回路336及びクロック切り替え回路337を備えている。
実施の形態3におけるキャッシュミス信号検出回路331、アドレス情報検出回路332、キャッシュデータ検出回路333、ストール判断回路334、命令検出回路335、クロック切り替え判断回路336及びクロック切り替え回路337は、それぞれ、実施の形態1におけるキャッシュミス信号検出部231、アドレス情報検出部232、キャッシュデータ検出部233、ストール判断部234、命令検出部235、クロック切り替え判断部236及びクロック切り替え部237と同じ機能を有している。
このように、CPU200、L2キャッシュ装置210、メモリコントローラ220及びクロック制御装置330は、1つの集積回路に搭載することができる。
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
本発明の一局面に係るクロック制御装置は、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知部と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出部と、前記ストール通知部からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断部と、前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部とを備える。
本発明の他の局面に係るクロック制御方法は、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出ステップと、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出ステップと、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出ステップと、前記アドレス情報検出ステップにおいて検出された前記アドレス情報と、前記キャッシュミス検出ステップでの検出結果と、前記キャッシュデータ検出ステップでの検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知ステップと、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出ステップと、前記ストール通知ステップにおいて通知されたメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出ステップにおける検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断ステップと、前記クロック切り替え判断ステップにおける判断に従って、前記クロック信号を切り替えるクロック切り替えステップとを含む。
本発明の他の局面に係るクロック制御プログラムは、中央演算処理装置から主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知部と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出部と、前記ストール通知部からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断部と、前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部としてコンピュータを機能させる。
本発明の他の局面に係る集積回路は、中央演算処理装置と、前記中央演算処理装置と主記憶装置との間に配置されたキャッシュ装置と、前記中央演算処理装置から前記主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出回路と、前記キャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出回路と、前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出回路と、前記アドレス情報検出回路によって検出された前記アドレス情報と、前記キャッシュミス検出回路での検出結果と、前記キャッシュデータ検出回路での検出結果とに基づいて、前記主記憶装置にアクセスすることを表すメモリストールの開始と終了とを通知するストール通知回路と、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令が存在するか否かを検出する命令検出回路と、前記ストール通知回路からメモリストールの開始と終了との通知を受け取り、メモリストール発生中であるか否かを判定し、メモリストール発生中であると判定した場合、前記命令検出回路の検出結果に基づいて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかを判断するクロック切り替え判断回路と、前記クロック切り替え判断回路による判断に従って、前記クロック信号を切り替えるクロック切り替え回路とを備える。
これらの構成によれば、アドレス情報検出部によって、中央演算処理装置から主記憶装置へのアクセスが検出され、主記憶装置におけるアクセス先のアドレスを表すアドレス情報が検出される。キャッシュミス検出部によって、中央演算処理装置と主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生が検出され、キャッシュデータ検出部によって、キャッシュ装置にデータを格納したことが検出される。そして、ストール通知部によって、アドレス情報検出部により検出されたアドレス情報と、キャッシュミス検出部での検出結果と、キャッシュデータ検出部での検出結果とに基づいて、主記憶装置にアクセスすることを表すメモリストールの開始と終了とが通知される。命令検出部によって、現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる後続命令が存在するか否かが検出される。クロック切り替え判断部によって、ストール通知部からメモリストールの開始と終了との通知が受け取られ、メモリストール発生中であるか否かが判定される。ここで、メモリストール発生中であると判定された場合、命令検出部の検出結果に基づいて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えるか、停止するかが判断される。そして、クロック切り替え部によって、クロック切り替え判断部による判断に従って、クロック信号が切り替えられる。
したがって、メモリストール発生中において、現在実行中の命令に後続する後続命令が順序に関係なく実行できる場合は、中央演算処理装置に供給するクロック信号のクロック周波数を低下させ、後続の命令が順序に関係なく実行できない場合は、中央演算処理装置に供給するクロック信号を停止させるので、性能を低下させることなく、消費電力を低減することができる。
また、上記のクロック制御装置において、前記クロック切り替え判断部は、前記命令検出部によって順序に関係なく実行できる前記後続命令が存在することが検出された場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断し、前記命令検出部によって順序に関係なく実行できる前記後続命令が存在しないことが検出された場合、前記中央演算処理装置に供給するクロック信号を停止すると判断することが好ましい。
この構成によれば、順序に関係なく実行できる後続命令が存在する場合、中央演算処理装置に供給するクロック信号が低クロック信号に切り替えられるので、メモリストール発生中であっても、順序に関係なく実行できる後続命令が低クロック信号で実行される。また、順序に関係なく実行できる後続命令が存在しない場合、中央演算処理装置に供給するクロック信号が停止される。したがって、性能を低下させることなく、消費電力を低減することができる。
また、上記のクロック制御装置において、前記キャッシュミス検出部は、キャッシュミスの発生を検出すると、前記キャッシュミスしたデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール通知部に通知し、前記キャッシュデータ検出部は、前記キャッシュ装置にデータを格納したことを検出すると、前記格納したデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール通知部に通知し、前記ストール通知部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの開始を判断し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの終了を判断することが好ましい。
この構成によれば、キャッシュミス検出部によって、キャッシュミスの発生が検出されると、キャッシュミスしたデータの主記憶装置におけるアドレスを表すアドレス情報がストール通知部に通知される。また、キャッシュデータ検出部によって、キャッシュ装置にデータを格納したことが検出されると、格納したデータの主記憶装置におけるアドレスを表すアドレス情報がストール通知部に通知される。そして、ストール通知部によって、アドレス情報検出部から通知されたアドレス情報と、キャッシュミス検出部から通知されたアドレス情報とに基づいて、メモリストールの開始が判断され、アドレス情報検出部から通知されたアドレス情報と、キャッシュデータ検出部から通知されたアドレス情報とに基づいて、メモリストールの終了が判断される。
したがって、主記憶装置におけるアクセス先のアドレスを表すアドレス情報と、キャッシュミスしたデータの主記憶装置におけるアドレスを表すアドレス情報とを照合することにより、メモリストールの開始を判断することができる。また、主記憶装置におけるアクセス先のアドレスを表すアドレス情報と、キャッシュ装置に格納したデータの主記憶装置におけるアドレスを表すアドレス情報とを照合することにより、メモリストールの終了を判断することができる。
また、上記のクロック制御装置において、前記ストール通知部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが開始したことを表すストール開始信号を前記クロック切り替え判断部に通知し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが終了したことを表すストール終了信号を前記クロック切り替え判断部に通知し、前記クロック切り替え判断部は、前記ストール通知部によって前記ストール開始信号が通知されてから前記ストール終了信号が通知されるまでの間、前記メモリストール発生中であると判断することが好ましい。
この構成によれば、ストール通知部によって、アドレス情報検出部から通知されたアドレス情報と、キャッシュミス検出部から通知されたアドレス情報とが一致する場合、メモリストールが開始したことを表すストール開始信号がクロック切り替え判断部に通知される。また、ストール通知部によって、アドレス情報検出部から通知されたアドレス情報と、キャッシュデータ検出部から通知されたアドレス情報とが一致する場合、メモリストールが終了したことを表すストール終了信号がクロック切り替え判断部に通知される。そして、クロック切り替え判断部によって、ストール通知部からストール開始信号が通知されてからストール終了信号が通知されるまでの間、メモリストール発生中であると判断される。
したがって、ストール開始信号とストール終了信号とを受信することにより、メモリストールの発生を容易に判断することができる。
また、上記のクロック制御装置において、前記命令検出部は、順序に関係なく実行できる前記後続命令が存在する場合、順序に関係なく実行できる前記後続命令の数を表す順序外命令数を前記クロック切り替え判断部へ通知し、前記クロック切り替え判断部は、前記命令検出部によって通知された前記順序外命令数に応じて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期を決定することが好ましい。
この構成によれば、命令検出部によって、順序に関係なく実行できる後続命令が存在する場合、順序に関係なく実行できる後続命令の数を表す順序外命令数がクロック切り替え判断部へ通知される。そして、クロック切り替え判断部によって、命令検出部から通知された順序外命令数に応じて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期が決定される。
したがって、順序に関係なく実行できる後続命令の数を表す順序外命令数に応じて、中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期が決定されるので、低クロック信号に切り替える周期を適切に制御することができる。
また、上記のクロック制御装置において、前記クロック切り替え判断部は、カウンタを有し、前記クロック切り替え判断部は、前記命令検出部によって前記順序外命令数が通知されると、前記順序外命令数を前記カウンタの値に設定し、メモリストール発生中であると判定した場合、前記カウンタの値が0であるか否かを判断し、前記カウンタの値が0であると判断した場合、前記中央演算処理装置に供給するクロック信号を停止させることを表すクロック停止信号を前記クロック切り替え部に送出し、前記カウンタの値が0でないと判断した場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えることを表す低クロック切り替え信号を前記クロック切り替え部に送出した後、前記カウンタの値をデクリメントし、メモリストール発生中でないと判定した場合、前記カウンタの値をリセットした後、送出中の前記クロック停止信号又は前記低クロック切り替え信号を停止することが好ましい。
この構成によれば、命令検出部から順序外命令数が通知されると、クロック切り替え判断部によって、順序外命令数がカウンタの値に設定され、メモリストール発生中であると判定された場合、カウンタの値が0であるか否かが判断される。そして、カウンタの値が0であると判断された場合、中央演算処理装置に供給するクロック信号を停止させることを表すクロック停止信号がクロック切り替え部に送出される。一方、カウンタの値が0でないと判断された場合、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えることを表す低クロック切り替え信号がクロック切り替え部に送出された後、カウンタの値がデクリメントされる。また、メモリストール発生中でないと判定された場合、カウンタの値がリセットされた後、送出中のクロック停止信号又は低クロック切り替え信号が停止される。
したがって、順序外命令数がカウンタの値に設定されるので、カウンタの値に基づいて、低クロック切り替え信号を送出する周期を容易に決定することができる。
また、上記のクロック制御装置において、前記中央演算処理装置が前記主記憶装置からフェッチした命令を格納するプリフェッチバッファと、前記プリフェッチバッファが空であることを検出するプリフェッチバッファ検出部とをさらに備え、前記クロック切り替え判断部は、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空であることが検出された場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断し、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空でないことが検出された場合、メモリストール発生中であるか否かを判定することが好ましい。
この構成によれば、プリフェッチバッファには、中央演算処理装置が主記憶装置からフェッチした命令が格納される。また、プリフェッチバッファ検出部によって、プリフェッチバッファが空であることが検出される。そして、プリフェッチバッファが空であることが検出された場合、クロック切り替え判断部によって、中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断され、プリフェッチバッファが空でないことが検出された場合、メモリストール発生中であるか否かが判定される。
したがって、プリフェッチバッファが空である場合、中央演算処理装置に低クロック信号が供給されるので、中央演算処理装置が命令を実行しない間、消費電力を低減することができる。
なお、発明の詳細な説明の項においてなされた具体的な実施態様または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、そのような具体例にのみ限定して狭義に解釈されるべきものではなく、本発明の精神と次に記載する特許請求事項との範囲内で、種々変更して実施することができるものである。
本発明にかかるクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路は、メモリストール発生中のクロック信号の切り替えを制御する機能を有し、PDA、移動体通信端末、デジタルカメラ及び携帯オーディオ機器などの携帯型の電子機器として有用である。また、本発明にかかるクロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路は、バッテリ駆動の電子機器などの用途にも応用できる。

Claims (11)

  1. 主記憶装置へアクセスする中央演算処理装置にクロック信号を提供するクロック制御装置であって、
    現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出部と、
    前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断部と、
    前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部とを備えることを特徴とするクロック制御装置。
  2. 前記クロック切り替え判断部は、
    順序に関係なく実行できる前記後続命令が存在する場合、前記中央演算処理装置に低クロック信号を供給すると判断し、
    順序に関係なく実行できる前記後続命令が存在しない場合、前記中央演算処理装置に供給するクロック信号を停止すると判断することを特徴とする請求項1記載のクロック制御装置。
  3. 前記クロック切り替え判断部は、
    前記主記憶装置へのアクセスを検出し、前記主記憶装置におけるアクセス先のアドレスを表すアドレス情報を検出するアドレス情報検出部と、
    前記中央演算処理装置と前記主記憶装置との間に配置されたキャッシュ装置におけるキャッシュミスの発生を検出するキャッシュミス検出部と、
    前記キャッシュ装置にデータを格納したことを検出するキャッシュデータ検出部と、
    前記アドレス情報検出部によって検出された前記アドレス情報と、前記キャッシュミス検出部での検出結果と、前記キャッシュデータ検出部での検出結果とに基づいて、前記メモリストールの発生の有無を判断するストール判断部とを備え、
    前記メモリストール発生中である場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断することを特徴とする請求項1記載のクロック制御装置。
  4. 前記キャッシュミス検出部は、キャッシュミスの発生を検出すると、前記キャッシュミスしたデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール判断部に通知し、
    前記キャッシュデータ検出部は、前記キャッシュ装置にデータを格納したことを検出すると、前記格納したデータの前記主記憶装置におけるアドレスを表すアドレス情報を前記ストール判断部に通知し、
    前記ストール判断部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの開始を判断し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とに基づいて、前記メモリストールの終了を判断することを特徴とする請求項3記載のクロック制御装置。
  5. 前記ストール判断部は、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュミス検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが開始したことを表すストール開始信号を前記クロック切り替え判断部に通知し、前記アドレス情報検出部によって通知された前記アドレス情報と、前記キャッシュデータ検出部によって通知された前記アドレス情報とが一致する場合、前記メモリストールが終了したことを表すストール終了信号を前記クロック切り替え判断部に通知し、
    前記クロック切り替え判断部は、前記ストール判断部によって前記ストール開始信号が通知されてから前記ストール終了信号が通知されるまでの間、前記メモリストール発生中であると判断することを特徴とする請求項4記載のクロック制御装置。
  6. 前記命令検出部は、順序に関係なく実行できる前記後続命令が存在する場合、順序に関係なく実行できる前記後続命令の数を表す順序外命令数を前記クロック切り替え判断部へ通知し、
    前記クロック切り替え判断部は、前記命令検出部によって通知された前記順序外命令数に応じて、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替える周期を決定することを特徴とする請求項1〜5のいずれかに記載のクロック制御装置。
  7. 前記クロック切り替え判断部は、カウンタを有し、
    前記クロック切り替え判断部は、
    前記命令検出部によって前記順序外命令数が通知されると、前記順序外命令数を前記カウンタの値に設定し、
    メモリストール発生中であると判定した場合、前記カウンタの値が0であるか否かを判断し、
    前記カウンタの値が0であると判断した場合、前記中央演算処理装置に供給するクロック信号を停止させることを表すクロック停止信号を前記クロック切り替え部に送出し、
    前記カウンタの値が0でないと判断した場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えることを表す低クロック切り替え信号を前記クロック切り替え部に送出した後、前記カウンタの値をデクリメントし、
    メモリストール発生中でないと判定した場合、前記カウンタの値をリセットした後、送出中の前記クロック停止信号又は前記低クロック切り替え信号を停止することを特徴とする請求項6記載のクロック制御装置。
  8. 前記中央演算処理装置が前記主記憶装置からフェッチした命令を格納するプリフェッチバッファと、
    前記プリフェッチバッファが空であることを検出するプリフェッチバッファ検出部とをさらに備え、
    前記クロック切り替え判断部は、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空であることが検出された場合、前記中央演算処理装置に供給するクロック信号を低クロック信号に切り替えると判断し、前記プリフェッチバッファ検出部によって前記プリフェッチバッファが空でないことが検出された場合、メモリストール発生中であるか否かを判定することを特徴とする請求項1〜7のいずれかに記載のクロック制御装置。
  9. 主記憶装置へアクセスする中央演算処理装置にクロック信号を提供するクロック制御方法であって、
    現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出ステップと、
    前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出ステップにおける検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断ステップと、
    前記クロック切り替え判断ステップにおける判断に従って、前記クロック信号を切り替えるクロック切り替えステップとを含むことを特徴とするクロック制御方法。
  10. 主記憶装置へアクセスする中央演算処理装置にクロック信号を提供するクロック制御プログラムであって、
    現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出部と、
    前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出部の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断部と、
    前記クロック切り替え判断部による判断に従って、前記クロック信号を切り替えるクロック切り替え部としてコンピュータを機能させることを特徴とするクロック制御プログラム。
  11. 主記憶装置へアクセスする中央演算処理装置にクロック信号を提供する集積回路であって、
    現在実行中の命令と、現在実行中の命令に後続する後続命令とのデータ依存関係に基づき、順序に関係なく実行できる前記後続命令を検出する命令検出回路と、
    前記中央演算処理装置が前記主記憶装置にアクセスするメモリストール発生中である場合、前記命令検出回路の検出結果に基づいて、前記中央演算処理装置に低クロック信号を供給するか、停止するかを判断するクロック切り替え判断回路と、
    前記クロック切り替え判断回路による判断に従って、前記クロック信号を切り替えるクロック切り替え回路とを備えることを特徴とする集積回路。
JP2009545349A 2007-12-13 2008-12-10 クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路 Expired - Fee Related JP5388864B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009545349A JP5388864B2 (ja) 2007-12-13 2008-12-10 クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007321823 2007-12-13
JP2007321823 2007-12-13
JP2009545349A JP5388864B2 (ja) 2007-12-13 2008-12-10 クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路
PCT/JP2008/003687 WO2009075102A1 (ja) 2007-12-13 2008-12-10 クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路

Publications (2)

Publication Number Publication Date
JPWO2009075102A1 JPWO2009075102A1 (ja) 2011-04-28
JP5388864B2 true JP5388864B2 (ja) 2014-01-15

Family

ID=40755350

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009545349A Expired - Fee Related JP5388864B2 (ja) 2007-12-13 2008-12-10 クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路

Country Status (4)

Country Link
US (2) US8117474B2 (ja)
JP (1) JP5388864B2 (ja)
CN (1) CN101606135B (ja)
WO (1) WO2009075102A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999464B (zh) * 2011-09-08 2017-02-08 上海华虹集成电路有限责任公司 一种ahb总线时钟切换电路
US8914650B2 (en) 2011-09-28 2014-12-16 Intel Corporation Dynamically adjusting power of non-core processor circuitry including buffer circuitry
US20130159673A1 (en) * 2011-12-15 2013-06-20 Advanced Micro Devices, Inc. Providing capacity guarantees for hardware transactional memory systems using fences
US9218018B2 (en) * 2012-09-14 2015-12-22 Oracle International Corporation Method and apparatus for distributed generation of multiple configurable ratioed clock domains within a high speed domain
US9087570B2 (en) 2013-01-17 2015-07-21 Micron Technology, Inc. Apparatuses and methods for controlling a clock signal provided to a clock tree
TWI508099B (zh) * 2013-01-28 2015-11-11 Phison Electronics Corp 工作時脈切換方法、記憶體控制器與記憶體儲存裝置
US9183904B2 (en) 2014-02-07 2015-11-10 Micron Technology, Inc. Apparatuses, memories, and methods for facilitating splitting of internal commands using a shared signal path
US20150370564A1 (en) * 2014-06-24 2015-12-24 Eli Kupermann Apparatus and method for adding a programmable short delay
CN105676944B (zh) * 2014-11-18 2019-03-26 龙芯中科技术有限公司 时钟网络的开关控制方法、装置及处理器
US20180024610A1 (en) * 2016-07-22 2018-01-25 Futurewei Technologies, Inc. Apparatus and method for setting a clock speed/voltage of cache memory based on memory request information
CN109582226A (zh) * 2018-11-14 2019-04-05 北京中电华大电子设计有限责任公司 一种高速存储访问逻辑结构及其控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002006979A (ja) * 2000-06-19 2002-01-11 Seiko Epson Corp クロック制御装置、半導体集積回路装置、マイクロコンピュータ及び電子機器
JP2002169790A (ja) * 2000-12-01 2002-06-14 Sharp Corp 半導体集積回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865684B2 (en) * 1993-12-13 2005-03-08 Hewlett-Packard Development Company, L.P. Utilization-based power management of a clocked device
US6233690B1 (en) * 1998-09-17 2001-05-15 Intel Corporation Mechanism for saving power on long latency stalls
JP3742364B2 (ja) * 2002-06-28 2006-02-01 株式会社東芝 クロック周波数の制御方法および電子機器
JP4143907B2 (ja) * 2002-09-30 2008-09-03 ソニー株式会社 情報処理装置および方法、並びにプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002006979A (ja) * 2000-06-19 2002-01-11 Seiko Epson Corp クロック制御装置、半導体集積回路装置、マイクロコンピュータ及び電子機器
JP2002169790A (ja) * 2000-12-01 2002-06-14 Sharp Corp 半導体集積回路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013029101; Diana Marculescu: 'On the Use of Microarchitecture-Driven Dynamic Voltage Scaling' On the Use of Microarchitecture-Driven Dynamic Voltage Scaling , 200006, 第3頁右欄 *

Also Published As

Publication number Publication date
US8117474B2 (en) 2012-02-14
US20100325469A1 (en) 2010-12-23
CN101606135A (zh) 2009-12-16
US20120110366A1 (en) 2012-05-03
US8726056B2 (en) 2014-05-13
WO2009075102A1 (ja) 2009-06-18
JPWO2009075102A1 (ja) 2011-04-28
CN101606135B (zh) 2012-03-28

Similar Documents

Publication Publication Date Title
JP5388864B2 (ja) クロック制御装置、クロック制御方法、クロック制御プログラム及び集積回路
JP4607884B2 (ja) 情報処理装置
JP4749793B2 (ja) 省電力処理装置、省電力処理方法、及び省電力処理プログラム
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
JPH077317B2 (ja) システム再起動装置
EP3332306B1 (en) System and method for cache aware low power mode control in a portable computing device
WO2007035811A1 (en) Hardware-assisted device configuration detection
KR20170013882A (ko) 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc)
JP6151465B1 (ja) プロセッサコアの電力モードを制御するためのレイテンシベースの電力モードユニット、ならびに関連する方法およびシステム
JP2006351013A (ja) 電子装置において保存/リストア手順を行なうための方法及びシステム
US7480812B2 (en) Microprocessor
JP2006243864A (ja) プロセッサおよび情報処理方法
US9652259B2 (en) Apparatus and method for managing register information in a processing system
KR101793282B1 (ko) 마이크로 컴퓨터
JP4693843B2 (ja) メモリ制御装置及びメモリ制御方法
JP5783348B2 (ja) 制御装置、制御プログラム、画像形成装置
JP2011044072A (ja) アイドル状態検出回路、半導体集積回路、信号処理装置、アイドル状態検出方法
KR102143269B1 (ko) I/o 동작 특성에 기초한 soc 유휴 전력 상태 제어를 위한 시스템 및 방법
JP2018523241A (ja) パント回避テーブル(pat)を使用したコンピュータプロセッサ内のメモリ命令パントの予測
JP2002082743A (ja) 電子機器及び電子機器制御プログラムを記憶した記憶媒体
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
US20110099398A1 (en) Integrated circuit and electronic apparatus
JP2007026091A (ja) 割込み制御回路およびその制御方法
WO2016164123A1 (en) Removing invalid literal load values, and related circuits, methods, and computer-readable media
US20110219257A1 (en) Idle-state detection circuit, semiconductor integrated circuit, and idle-state detection method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131008

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees