(57)【要約】【課題】プロセッサが動作停止状態に移行した場合、キャッシュデータの一貫性を保持しつつ、キャッシュメモリの消費電力を削減できる。【解決手段】第１及び第２のプロセッサ１０１、１１１と、共有メモリ１２３と、第１及び第２のキャッシュメモリ１０２、１１２と、第１及び第２のキャッシュメモリが記憶しているデータの一貫性を管理する一貫性管理回路１２０と、一貫性管理回路から第１及び第２のキャッシュメモリに対して、データ更新を要求する要求信号を伝達するための要求信号線ＳＣＯＰと、第１及び第２のキャッシュメモリから一貫性管理回路に対して、データ更新が完了したことを通知する通知信号を伝達するための通知信号線ＳＣＣＯＲＥＲＥＡＤＹと、要求信号と通知信号とに応じて、第１及び第２のキャッシュメモリへのクロック信号及び電源の供給を制御するキャッシュ電力制御回路１０３、１１３と、を備えるマルチプロセッサシステム。【選択図】図１
2011150653.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のプロセッサと、
前記第１及び第２のプロセッサが共有する共有メモリと、
前記第１及び第２のプロセッサのそれぞれに対応して設けられた第１及び第２のキャッシュメモリと、
前記第１及び第２のキャッシュメモリが記憶しているデータの一貫性を管理する一貫性管理回路と、
前記一貫性管理回路から前記第１及び第２のキャッシュメモリに対して、データ更新を要求する要求信号を伝達するための要求信号線と、
前記第１及び第２のキャッシュメモリから前記一貫性管理回路に対して、前記データ更新が完了したことを通知する通知信号を伝達するための通知信号線と、
前記要求信号と前記通知信号とに応じて、前記第１及び第２のキャッシュメモリへのクロック信号及び電源の供給を制御するキャッシュ電力制御回路と、を備えるマルチプロセッサシステム。
【請求項２】
前記キャッシュ電力制御回路は、
前記第１のプロセッサが動作停止状態に移行する場合、前記第１のキャッシュメモリへの電源供給の少なくとも一部を停止することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記キャッシュ電力制御回路は、
前記第１のプロセッサが動作停止状態に移行する場合、前記第１のキャッシュメモリへのクロック信号の供給を停止した後、前記電源供給の少なくとも一部を停止することを特徴とする請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記キャッシュ電力制御回路は、
前記第１のキャッシュメモリへの前記電源供給の少なくとも一部を停止した後、当該第１のキャッシュメモリに対するデータ更新が必要となった場合、当該キャッシュメモリへの電源供給を再開することを特徴とする請求項２又は３に記載のマルチプロセッサシステム。
【請求項５】
前記キャッシュ電力制御回路は、
前記データ更新が完了した後、前記第１のキャッシュメモリへの電源供給を再度停止することを特徴とする請求項４に記載のマルチプロセッサシステム。
【請求項６】
前記第１及び第２のキャッシュメモリは、それぞれ、
揮発性記憶素子と、
前記揮発性記憶素子の制御を行なうキャッシュメモリ制御回路と、
前記キャッシュメモリ制御回路への電源供給を制御する電源スイッチと、を有することを特徴とする請求項１〜５のいずれか一項に記載のマルチプロセッサシステム。
【請求項７】
前記第１及び第２のキャッシュメモリは、それぞれ、
不揮発性記憶素子と、
前記不揮発性記憶素子の制御を行なうキャッシュメモリ制御回路と、
前記不揮発性記憶素子及び前記キャッシュメモリ制御回路への電源供給を制御する電源スイッチと、を有することを特徴とする請求項１〜５のいずれか一項に記載のマルチプロセッサシステム。
【請求項８】
前記不揮発性記憶素子がＭＲＡＭで構成されることを特徴とする請求項７に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサがメモリ空間を共有し、並列に動作するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
複数のプロセッサがメモリ空間を共有し、並列に動作するマルチプロセッサシステムでは、携帯機器への応用等のため省電力制御技術の必要性が高まっている。また、マルチプロセッサシステムでは、各プロセッサが共有するメモリへのアクセス速度とプロセッサの処理速度との速度差を補うため、プロセッサ毎にキャッシュメモリを有する場合がある。
【０００３】
この場合、各プロセッサが共有メモリにアクセスすると、対応するキャッシュメモリが記憶しているデータ（キャッシュデータ）が更新される。そのため、各プロセッサが常に最新の正しいデータにアクセスできるよう、各々のキャッシュメモリ間、及び、共有メモリとの間でデータの一貫性を保つ必要がある。これは、キャッシュコヒーレンス（cache coherence）又はキャッシュコヒーレンシー（cache coherency)と呼ばれている。
【０００４】
図８は、複数のプロセッサでメモリ空間を共有し、並列に動作するＳＭＰ型のマルチプロセッサシステムの一例を示す図である。図８に開示したマルチプロセッサシステムは、プロセッサコア２と対応するキャッシュメモリ３を有するプロセッサ１、同様にプロセッサコア１２と対応するキャッシュメモリ１３を有するプロセッサ１１、前記２つのプロセッサで共有する共有メモリ５と、前記２つのプロセッサ１、１１と共有メモリ５を接続する相互結合網４を有する。２つのプロセッサ１、１１と共有メモリ５は、相互結合網４を介して相互にデータの受け渡しが可能である。ここで、相互結合網４は、例えば単一バス、マルチバス、多段相互結合網等、システムの要求に応じて構成される。
【０００５】
図８においてキャッシュメモリのそれぞれが記憶しているキャッシュデータの一貫性を保つキャッシュコヒーレンスの制御の一例を説明する。尚、キャッシュコヒーレンスを管理するためのプロトコル（cache coherence protocol）はいろいろな方式が提案されているが、ここでは基本的な概念を示すのみとする。
【０００６】
図８において、２つのプロセッサ１、１１の書き込み方式はライト・スルー方式とし、データ書き込み時には対応するキャッシュメモリとメモリの両方にデータを書き込むものとする。また、初期状態において、２つのキャッシュメモリ３、１３が同じデータＸを記憶しているものとする。
【０００７】
ここでプロセッサコア２がデータＸをデータＹに更新すると、キャッシュメモリ３及び共有メモリ５上のデータＸがデータＹに更新される。この場合、キャッシュメモリ１３上のデータＸがデータＹに更新されないままであると、キャッシュメモリ３、１３の間でキャッシュデータの不一致が発生する。
【０００８】
上記問題を解決するための例として、上記キャッシュメモリ３、１３が、相互結合網４上の全ての書き込み操作に対して監視を行なう方法がある。この場合、キャッシュメモリ３、１３は自身で保有しているデータＸが更新されたことを認識できるようになる。
【０００９】
キャッシュメモリ１３は、共有メモリ５上のデータＸがデータＹへ更新されたことを認識すると、自身で保有しているデータＸを無効（Ｉｎｖａｌｉｄ）状態に設定する。ここで、キャッシュメモリ１３に対応するプロセッサコア１２が、当該データを読み出そうとしても、キャッシュメモリ１３上の更新前のデータＸは無効状態に設定されており、利用することができない。そのため、共有メモリ５から更新後のデータＹを読み込む。このときキャッシュメモリ１３もキャッシュデータとしてデータＹを記憶するため、キャッシュメモリのそれぞれに記憶されたキャッシュデータの不一致が回避される。
【００１０】
また、特許文献１には、キャッシュコヒーレンスを維持する能力と共に省電力化を実現するマルチプロセッサシステムが開示されている。図９に示す特許文献に１に記載の装置は、複数のプロセッサコア２２と各々のプロセッサコアに接続されたキャッシュメモリ２３と、キャッシュメモリ２３のそれぞれに記憶されたキャッシュデータが同一となるよう制御を行うメモリアクセス制御装置２４を有する。
【００１１】
この構成では、プロセッサコア２２の処理すべき命令が無い場合等に、省電力化のためにプロセッサコア２２へのクロックの供給が停止される。即ち、クロックが供給されていない状態（電源供給は継続）である非アクティブ状態に移行することができる。他方、プロセッサコア２２が非アクティブ状態になった場合も、対応するキャッシュメモリ２３はクロック及び電源が供給されるアクティブ状態を維持するため、キャッシュデータの一貫性を保つための処理を行なうことができる。
【００１２】
このため、プロセッサコア２２が非アクティブ状態に移行した場合、キャッシュメモリ２３は通常通り動作しキャッシュの一貫性を保つと共に、プロセッサコア２２の消費電力を削減できる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００５−２５７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献１に開示されたマルチプロセッサシステムでは、プロセッサコア２２に供給されるクロックを停止してプロセッサコア２２を非アクティブ状態とした場合でも、キャッシュメモリ２３への電源及びクロックの供給は維持される。このため、キャッシュメモリ２３はキャッシュデータの一貫性を保つキャッシュコヒーレンス動作を継続することができるが、キャッシュメモリ２３に対しては電源とクロック信号が継続的に供給されるため、十分な省電力化が実現できない。
【課題を解決するための手段】
【００１５】
本発明によるマルチプロセッサシステムは、
第１及び第２のプロセッサと、
前記第１及び第２のプロセッサが共有する共有メモリと、
前記第１及び第２のプロセッサのそれぞれに対応して設けられた第１及び第２のキャッシュメモリと、
前記第１及び第２のキャッシュメモリが記憶しているデータの一貫性を管理する一貫性管理回路と、
前記一貫性管理回路から前記第１及び第２のキャッシュメモリに対して、データ更新を要求する要求信号を伝達するための要求信号線と、
前記第１及び第２のキャッシュメモリから前記一貫性管理回路に対して、前記データ更新が完了したことを通知する通知信号を伝達するための通知信号線と、
前記要求信号と前記通知信号とに応じて、前記第１及び第２のキャッシュメモリへのクロック信号及び電源の供給を制御するキャッシュ電力制御回路と、を備えるものである。
【００１６】
プロセッサが動作停止状態に移行した場合、キャッシュ電力制御回路は、要求信号と通知信号とに応じて、対応するキャッシュメモリへのクロック信号及び電源の供給を制御する。
【発明の効果】
【００１７】
本発明によれば、プロセッサが動作停止状態に移行した場合、キャッシュデータの一貫性を保つ動作を行なうことができると共に、キャッシュメモリの消費電力を削減できる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１に係るマルチプロセッサの構成を示すブロック図である。
【図２】キャッシュラインの構成の一例を示す図である。
【図３】実施の形態１に係るキャッシュメモリの電源構成の一例を示す回路図である。
【図４】実施の形態１に係るキャッシュコヒーレンスを説明するためのブロック図である。
【図５】実施の形態１に係るキャッシュ電力制御回路の動作を説明するためのタイミングチャートである。
【図６】実施の形態１に係る一貫性管理動作時のキャッシュ電力制御回路の動作を説明するためのタイミングチャートである。
【図７】実施の形態２のキャッシュメモリの電源構成の一例を示す回路図である。
【図８】一般的なマルチプロセッサシステムの構成を示すブロック図である。
【図９】特許文献１のマルチプロセッサシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【００２０】
（第１の実施の形態）
以下、図面を参照して、本発明に係る実施の形態を説明する。図１は、本発明の第１の実施の形態に係るマルチプロセッサの構成を示すブロック図である。図１ではプロセッサの数が２つの場合を説明するが、プロセッサの数は３つ以上であってもよい。
【００２１】
図１のマルチプロセッサシステムは、２つのプロセッサ１０１、１１１と、プロセッサ１０１、１１１にそれぞれ対応して設けられたキャッシュメモリ１０２、１１２と、一貫性管理回路１２０と、キャッシュ電力制御回路１０３、１１３、一貫性管理バス１２２ａ、１２２ｂとを備える。また、共有メモリ１２３、モード設定レジスタ１０５、１１５、クロック制御回路１０４、１１４、システムバス１２１は、本実施の形態に係るマルチプロセッサシステムにおける周辺回路である。
【００２２】
プロセッサ１０１、１１１は、処理すべき命令がない場合等に消費電力を抑えるためにクロック信号及び電源の供給を停止する動作停止状態に移行する省電力機能を備える。尚、当該マルチプロセッサシステムは、省電力機能を有しない別のプロセッサをさらに有していてもよい。
【００２３】
プロセッサ１０１が動作停止状態に移行する場合、プロセッサ１０１はモード設定レジスタ１０５に対して動作停止状態を示す値を設定する。モード設定レジスタ１０５からは、設定された値に対応するモード信号ＣＯＲＥ＿ＯＦＦ１（このケースではＨレベル）が出力される。クロック制御回路１０４は、モード設定レジスタ１０５からのＨレベルのモード信号ＣＯＲＥ＿ＯＦＦ１に基づきクロック信号ＣＬＫ１（ＣＯＲＥ）のプロセッサ１０１に対する供給を停止する。クロックの供給が停止されたプロセッサ１０１は動作を停止し、動作停止状態に移行する。この後、さらに、プロセッサ１０１のリーク電流を抑えるために、キャッシュ電力制御回路１０３がＨレベルのモード信号ＣＯＲＥ＿ＯＦＦ１に基づきプロセッサ１０１の電源供給を制御するための電源制御信号ＰＳＷ１１により、プロセッサ１０１の電源をオフしてもよい。この場合、プロセッサ１０１はリテンションフリップフロップ（不図示）等を使って内部レジスタの状態を保持した状態で電源をオフするのが望ましい。
【００２４】
同様に、プロセッサ１１１が動作停止状態に移行する場合、プロセッサ１１１はモード設定レジスタ１１５に対して動作停止状態を示す値を設定する。モード設定レジスタ１１５からは、設定された値に対応するモード信号ＣＯＲＥ＿ＯＦＦ２（このケースではＨレベル）が出力される。クロック制御回路１１４は、モード設定レジスタ１１５からのＨレベルのモード信号ＣＯＲＥ＿ＯＦＦ２に基づきクロック信号ＣＬＫ２（ＣＯＲＥ）のプロセッサ１１１に対する供給を停止する。クロックの供給が停止されたプロセッサ１１１は動作を停止し、動作停止状態に移行する。この後、さらに、プロセッサ１１１のリーク電流を抑えるために、キャッシュ電力制御回路１１３がＨレベルのモード信号ＣＯＲＥ＿ＯＦＦ２に基づきプロセッサ１１１の電源供給を制御するための電源制御信号ＰＳＷ２１により、プロセッサ１１１の電源をオフしてもよい。この場合、プロセッサ１１１はリテンションフリップフロップ（不図示）等を使って内部レジスタの状態を保持した状態で電源をオフするのが望ましい。
【００２５】
キャッシュメモリ１０２は共有メモリ１２３よりも高速にデータの読み書きが可能な記憶装置である。プロセッサ１０１が共有メモリ１２３に対してデータの読み書きを行なった場合、そのデータを一時的に記憶する。プロセッサ１０１が共有メモリ１２３上のデータを読み出す場合、キャッシュメモリ１０２上に該当する有効なキャッシュデータがあるかどうかを確認し、有効なキャッシュデータがある場合には、プロセッサ１０１は低速の共有メモリ１２３からではなく、高速のキャッシュメモリ１０２からデータを読み出すことにより、システムを高速化する。キャッシュメモリ１１２もキャッシュメモリ１０２と同様の構成を有する。
【００２６】
キャッシュメモリ１０２は、キャッシュデータをキャッシュラインと呼ばれる所定の単位毎に管理し、各々のキャッシュラインは、データ領域とタグ領域を有する。図２は、データ領域のサイズが３２バイト、完全連想マッピング（fully associative mapping）方式の場合のキャッシュラインの構成例を示す図である。データ領域には、共有メモリ１２３上のデータのコピーであるキャッシュデータを格納する。タグ領域はキャッシュデータの共有メモリ１２３上の格納位置を示すアドレス情報の一部とキャッシュラインの状態を示す状態ビットを含む制御情報を格納する。
【００２７】
キャッシュデータは、前述したキャッシュラインのサイズ毎に管理されるため、タグ領域にアドレス情報の全てのビットを記憶する必要はない。図２の例ではキャッシュラインのサイズが３２バイトであるため、下位５ビットを除くアドレスの上位ビットがタグ領域に格納される。例えば、アドレスバスが３２ビット幅の場合、アドレスの上位２７ビットが記憶される。尚、上記キャッシュラインの構成はあくまでも一例であり、他の構成であってもよい。
【００２８】
タグ領域に格納される状態ビットは、各々のキャッシュラインの状態を示す。キャッシュコヒーレンスプロトコルは多数の方式が提案されているが、ここではＭＥＳＩプロトコルの例について説明する。この場合、４つの状態が存在するため、少なくとも２ビットの状態ビットが必要となる。
【００２９】
ＭＥＳＩプロトコルでは、図２に示すように、キャッシュラインは以下の４つの状態のいずれかとる。１つ目の状態であるＭｏｄｉｆｉｅｄ（変更）は、最新のデータが当該キャッシュラインのみに存在し、共有メモリ１２３の値から変更されている状態（ｄｉｒｔｙ）を示す。２つ目の状態であるＥｘｃｌｕｓｉｖｅ（排他）は、最新のデータが当該キャッシュラインのみに存在し、その値が共有メモリ１２３の値と一致している状態（ｃｌｅａｎ）を示す。
３つ目の状態であるＳｈａｒｅｄ（共有）は、システム内の他のキャッシュメモリにも同じデータが存在し、その値が共有メモリ１２３とも一致している状態を示す。
４つ目の状態であるＩｎｖａｌｉｄ（無効）は、該当するキャッシュラインのデータが無効である状態を示す。
【００３０】
ここで、図３に本実施の形態に係るキャッシュメモリ１０２の電源構成の例を示す。キャッシュメモリ１０２は、揮発性メモリ１３１（例えばＳＲＡＭ）、キャッシュメモリの動作を制御するキャッシュ制御回路１３５を備える。揮発性メモリ１３１はさらに、書き込まれたデータを記憶して保持する揮発性記憶素子１３２、その制御（アドレスのデコード等）を行なうメモリ制御回路１３３を備える。ここで、メモリ制御回路１３３とキャッシュ制御回路１３５とは並列接続され、キャッシュメモリ制御回路１３４を構成している。このキャッシュメモリ制御回路１３４の電源ラインに、電源制御信号ＰＳＷ１２により制御される電源スイッチ１３６が設けられている。キャッシュメモリ１０２は、後述するキャッシュ電力制御回路１０３が出力する電源制御信号ＰＳＷ１２の信号レベルに応じて通常のキャッシュメモリとして動作する通常状態と、記憶保持のみを行なう省電力状態とを切り替えることができる。
【００３１】
図１に戻り、キャッシュ電力制御回路１０３は、キャッシュメモリ１０２に入力されるべきクロック信号及び電源の供給とプロセッサ１０１の電源の供給を行うかどうかを制御する。キャッシュ電力制御回路１０３はモード信号ＣＯＲＥ＿ＯＦＦ１を監視する。そして、プロセッサ１０１に入力されるクロックが停止されプロセッサ１０１が動作停止状態に移行したと判断すると、対応するキャッシュメモリ１０２に対するクロック信号ＣＬＫ１（ＣＡＣＨＥ）の供給を停止する。また、キャッシュメモリ１０２への電源供給を制御する電源制御信号ＰＳＷ１２により、キャッシュメモリ１０２への電源供給を停止する。さらに、上述の通り、プロセッサ１０１への電源供給を制御するための電源制御信号ＰＳＷ１１により、プロセッサ１０１への電源供給を停止してもよい。
【００３２】
同様に、キャッシュ電力制御回路１１３は、キャッシュメモリ１１２に入力されるべきクロック信号及び電源の供給とプロセッサ１１１の電源の供給を行うかどうかを制御する。キャッシュ電力制御回路１１３はモード信号ＣＯＲＥ＿ＯＦＦ２を監視する。そして、プロセッサ１１１に入力されるクロックが停止されプロセッサ１１１が動作停止状態に移行したと判断すると、対応するキャッシュメモリ１１２に対するクロック信号ＣＬＫ２（ＣＡＣＨＥ）の供給を停止する。また、キャッシュメモリ１１２への電源供給を制御する電源制御信号ＰＳＷ２２により、キャッシュメモリ１１２への電源供給を停止する。さらに、上述の通り、プロセッサ１１１への電源供給を制御するための電源制御信号ＰＳＷ２１により、プロセッサ１１１への電源供給を停止してもよい。
【００３３】
また、プロセッサ１０１が動作停止状態に移行し、さらに対応するキャッシュメモリ１０２もクロック及び電源供給が停止された省電力状態にある場合、キャッシュ電力制御回路１０３は、ＳＣＯＰバス信号とＳＣＣＯＲＥＲＥＡＤＹ信号とを監視する。そして、ＳＣＯＰバス信号とＳＣＣＯＲＥＲＥＡＤＹ信号の状態に応じて、キャッシュメモリ１０２に対するクロックと電源の供給と停止を制御する。ＳＣＯＰバス信号とＳＣＣＯＲＥＲＥＡＤＹ信号の詳細については後述する。
【００３４】
同様に、プロセッサ１１１が動作停止状態に移行し、さらに対応するキャッシュメモリ１１２もクロック及び電源供給が停止された省電力状態にある場合、キャッシュ電力制御回路１１３は、ＳＣＯＰバス信号とＳＣＣＯＲＥＲＥＡＤＹ信号とを監視する。そして、ＳＣＯＰバス信号とＳＣＣＯＲＥＲＥＡＤＹ信号の状態に応じて、キャッシュメモリ１１２に対するクロックと電源の供給と停止を制御する。
【００３５】
次に、クロック制御回路１０４はモード信号ＣＯＲＥ＿ＯＦＦ１の設定により、プロセッサ１０１へのクロック供給を制御する。例えば、モード信号ＣＯＲＥ＿ＯＦＦ１がＬレベル時、入力されたクロック信号ＣＬＫ１（ＣＯＲＥ）をプロセッサ１０１に供給し、モード信号ＣＯＲＥ＿ＯＦＦ１がＨレベルの時、クロック信号ＣＬＫ１（ＣＯＲＥ）のプロセッサ１０１への供給を停止する。
【００３６】
モード設定レジスタ１０５は、プロセッサの動作モードを設定するレジスタであって、設定された値に応じてＨレベル又はＬレベルのモード信号ＣＯＲＥ＿ＯＦＦ１を出力する。さらに、モード設定レジスタ１０５は接続されたプロセッサ１０１からだけでなく、外部信号ＩＮＴ１によってハードウェア的に制御可能であり、その制御によりモード信号ＣＯＲＥ＿ＯＦＦ１をＨレベル又はＬレベルとして出力する。
【００３７】
尚、プロセッサ１１１のクロック制御回路１１４及びモード設定レジスタ１１５は、プロセッサ１０１のクロック制御回路１０４及びモード設定レジスタ１０５と同様の構成を有する。
【００３８】
次に、一貫性管理回路１２０はキャッシュメモリ１０２、１１２が記憶しているキャッシュデータの一貫性を保つよう制御を行なう回路である。一貫性管理回路１２０は、システムバス１２１を介してキャッシュメモリ１０２、１１２、共有メモリ１２３に接続され、またキャッシュメモリ１０２、１１２を介してプロセッサ１０１、１１１に接続されている。さらに、システムバス１２１とは別に設けられ、キャッシュメモリ１０２、１１２が記憶しているキャッシュデータを同一に保つために必要なデータと制御信号の受け渡しを行なうための一貫性管理バス１２２ａ、１２２ｂを介してキャッシュメモリ１０２、１１２に接続されている。
【００３９】
一貫性管理回路１２０は、キャッシュデータの一貫性を制御する対象となるキャッシュメモリ１０２、１１２に記憶されているキャッシュラインのタグ領域と同一内容の情報を格納するタグメモリ（不図示）を有する。このため、一貫性管理回路１２０はタグメモリを参照することによって、キャッシュメモリ１０２、１１２のキャッシュラインの状態を確認することができる。
【００４０】
一貫性管理回路１２０は、システムバス１２１と一貫性管理バス１２２ａ、１２２ｂを監視すると共に、自己が保有するタグメモリを参照する。ここで、一貫性管理回路１２０は、キャッシュメモリ１０２、１１２に対してキャッシュデータの一貫性を制御する必要があると判断すると、一貫性管理バス１２２ａ、１２２ｂを介して一貫性コマンドを発行する。
【００４１】
一貫性コマンドについては、特許文献１において以下の４つの一貫性コマンドが定義されている。
１つ目は、キャッシュラインの状態の変更を要求するＦＯＲＣＥコマンド。
２つ目は、キャッシュラインの状態の変更と、クリーニングを要求するＣＬＥＡＮコマンド。
３つ目は、キャッシュラインの状態の変更と、コピーを要求するＣＯＰＹコマンド。
４つめは、何も操作を行なわないノーオペレーションを示すＮＯＰコマンド。
ここでは、上記の定義に従って説明を行なう。
【００４２】
一貫性管理バス１２２ａ、１２２ｂは、前述した一貫性コマンドの受け渡しに必要な信号線であり、キャッシュメモリ毎に設けられている。また、一貫性管理バス１２２ａ、１２２ｂは、一貫性管理回路１２０が所要の一貫性コマンド（データ更新を要求する要求信号）をキャッシュメモリ１０２、１１２に知らせるためのＳＣＯＰ（ＳＣＯＰ１、ＳＣＯＰ２）バス（要求信号線）を備えている。さらに、一貫性管理バス１２２ａ、１２２ｂは、キャッシュメモリ１０２、１１２が一貫性コマンドを処理するための準備ができていることと、一貫性コマンドによる処理が完了したことを一貫性管理回路１２０に知らせるためのＳＣＣＯＲＥＲＥＡＤＹ信号（ＳＣＣＯＲＥＲＥＡＤＹ１、ＳＣＣＯＲＥＲＥＡＤＹ２）用バス（通知信号線）を備えている。
【００４３】
ＳＣＯＰ１バス、ＳＣＯＰ２バスは一貫性コマンドの開始を一貫性管理回路１２０からキャッシュメモリ１０２、１１２に知らせる２ビットの信号線である。信号の値によって、例えば「００」はＮＯＰコマンド、「０１」はＦＯＲＣＥコマンド、「１０」はＣＯＰＹコマンド、「１１」はＣＬＥＡＮコマンドを表す。
【００４４】
この場合、キャッシュ電力制御回路１０３、１１３は、それぞれＳＣＯＰバスの２ビットの信号線を監視することによって、いずれかの信号レベルがＨレベルとなった場合に、一貫性管理回路１２０からキャッシュメモリ１０２、１１２に一貫性コマンドが発行されたと判断することができる。
【００４５】
また、ＳＣＣＯＲＥＲＥＡＤＹ信号は、キャッシュメモリ１０２、１１２から一貫性管理回路１２０に対して、キャッシュの状態を通知する。例えば、Ｌレベルにより、キャッシュが一貫性に係る動作を行なう準備ができたことを通知する。他方、Ｈレベルにより、キャッシュの一貫性に係る動作が完了したことを通知する。
【００４６】
従って、一貫性管理回路１２０がＳＣＯＰバスで一貫性コマンドの開始を例えばキャッシュメモリ１０２に通知した場合、一貫性管理回路１２０は、キャッシュメモリ１０２からのＳＣＣＯＲＥＲＥＡＤＹ１信号がＬレベルに設定されるのを待ってから処理に必要なデータを送信すれば、省電力状態から復帰中でまだ動作の準備が整っていないキャッシュメモリ１０２に対して誤ってデータを送信してしまうことを防止できる。
【００４７】
共有メモリ１２３は、少なくともその一部をプロセッサ１０１、１１１で共有されるメモリ回路で、その構成は複数のブロックの組合せであっても、単独のブロックであっても、またレベル２キャッシュを含む構成であってもよく、システムの要求に応じて構成される。
【００４８】
次に、一貫性管理回路１２０に係る動作について、図４を参照して説明する。
プロセッサ１０１は動作停止状態であり、キャッシュメモリ１０２はクロック及び電源が停止された省電力状態、プロセッサ１１１、キャッシュメモリ１１２は通常通りクロックと電源が供給され、処理を行なっているものとする。
【００４９】
ここで、一貫性管理回路１２０はキャッシュメモリ１０２のタグ領域と同じ情報を記憶するタグメモリ１５１と、キャッシュメモリ１１２のタグ領域と同じ情報を記憶するタグメモリ１５２を有する。
【００５０】
このとき、プロセッサ１０１は動作停止状態にあるため、プロセッサ１０１からは共有メモリ１２３への読み出し、書き込み等の要求は発生しない。そのため、一貫性管理回路１２０は、システムバス１２１及び一貫性管理バス１２２ａ、１２２ｂ上の信号を監視し、プロセッサ１１１のメモリアクセスに応じた動作を行なう。
【００５１】
以下に、この状態で一貫性管理回路１２０から省電力状態にあるキャッシュメモリ１０２に対して一貫性コマンドが発行される場合の動作について説明する。図４を参照して、プロセッサ１１１が共有メモリ１２３上のデータを読み出す場合、プロセッサ１１１は、キャッシュメモリ１１２、システムバス１２１を介して共有メモリ１２３上の所定のアドレスに対して読み出し要求を行なう。
【００５２】
一貫性管理回路１２０はシステムバス１２１を監視し、プロセッサ１１１の読み出し要求を検出すると読み出し先のアドレスと自己が保有するタグメモリ１５１、１５２上のアドレス上位ビット情報と状態ビットを参照し、タグメモリ１５１、１５２上に読み出しを要求されたデータが有るか否かとキャッシュラインの状態とを確認する。
【００５３】
ここで、プロセッサ１１１が読み出しを要求したアドレスが、タグメモリ１５１上存在し、その状態がＥｘｃｌｕｓｉｖｅ（排他）の場合には、キャッシュメモリ１０２と共有メモリ１２３上に最新のデータが存在し、キャッシュメモリ１１２上には最新データが存在しないことを示す。
【００５４】
プロセッサ１１１はキャッシュメモリ１１２上に有効なキャッシュデータが無いため、共有メモリ１２３から該当するアドレスのデータを読み出し、キャッシュメモリ１１２は読み出されたデータのコピーをキャッシュラインに保存する。
【００５５】
このとき、読み出されたアドレスの最新データは、共有メモリ１２３、キャッシュメモリ１０２、１１２上に共に存在するので、キャッシュメモリ１０２、１１２、及びタグメモリ１５１、１５２上のキャッシュラインの状態ビットはＳｈａｒｅｄ（共有）に設定される必要がある。
【００５６】
このとき、一貫性管理回路１２０から省電力状態にあるキャッシュメモリ１０２に対して、キャッシュメモリ１０２上のキャッシュラインの状態をＥｘｃｌｕｓｉｖｅ（排他）からＳｈａｒｅｄ（共有）に変更を要求するために、一貫性管理コマンドの一つであるＦＯＲＣＥコマンドが発行される。
【００５７】
ＦＯＲＣＥコマンドを受けたキャッシュメモリ１０２は、該当するキャッシュラインの状態ビットをＳｈａｒｅｄ（共有）に更新する。
【００５８】
また、プロセッサ１１１が共有メモリ１２３上の所定のアドレスに対して読み出し要求を行なったデータが、タグメモリ１５１上にＭｏｄｉｆｉｅｄ（変更）の状態で存在する場合には、キャッシュメモリ１０２上に最新のデータが存在し、共有メモリ１２３とキャッシュメモリ１１２上には最新データが存在しない状態を示す。
【００５９】
このとき、一貫性管理回路１２０から、タグメモリ１５１に対応し、省電力状態にあるキャッシュメモリ１０２に対して、当該アドレスを含むキャッシュラインのデータを共有メモリ１２３に反映させるために、ＣＬＥＡＮコマンドが発行される。ＣＬＥＡＮコマンドを受けたキャッシュメモリ１０２は、該当するキャッシュラインのデータを共有メモリ１２３に書き込む。
【００６０】
その後、プロセッサ１１１は、共有メモリ１２３から該当するアドレスのデータを読み出し、キャッシュメモリ１１２は読み出されたデータのコピーをキャッシュラインに保存する。このとき、キャッシュメモリ１０２、１１２、及びタグメモリ１５１、１５２上のキャッシュラインは共に最新のデータを共有する。
【００６１】
このとき、再び一貫性管理回路１２０から省電力状態にあるキャッシュメモリ１０２に対して、キャッシュメモリ１０２上のキャッシュラインの状態をＥｘｃｌｕｓｉｖｅ（排他）からＳｈａｒｅｄ（共有）に変更を要求するために、一貫性管理コマンドの一つであるＦＯＲＣＥコマンドが発行され、コマンドを受けたキャッシュメモリ１０２は、該当するキャッシュラインの状態ビットをＳｈａｒｅｄ（共有）に更新する。
【００６２】
一方、プロセッサ１１１が共有メモリ１２３上のデータへの書き込みを要求する場合には、プロセッサ１１１はシステムバス１２１を介して共有メモリ１２３上の所定のアドレスに対して書き込み要求を行なう。一貫性管理回路１２０は、システムバス１２１を監視し、プロセッサ１１１の書込み要求を検出すると書き込み先のアドレスと自己が保有するタグメモリ１５１、１５２上のアドレス上位ビット情報と状態ビットを参照し、タグメモリ１５１、１５２上に書き込み要求されたデータが有るか否かとキャッシュラインの状態を確認する。
【００６３】
このとき、プロセッサ１１１が書き込みを要求したアドレスのデータが、タグメモリ１５１上に存在し、その状態がＳｈａｒｅ（共有）である場合には、キャッシュメモリ１０２、１１２と共有メモリ１２３でデータを共有している状態であることを示す。
【００６４】
プロセッサ１１１の書込み要求を行なった所定のアドレスのデータが、共有メモリ１２３及びキャッシュメモリ１１２に書き込まれた後は、タグメモリ１５１に対応するキャッシュメモリ１０２上のデータが不一致となるので、一貫性管理回路１２０から省電力状態にあるキャッシュメモリ１０２に対して、キャッシュメモリ１０２上のキャッシュラインの状態をＩｎｖａｌｉｄ（無効）状態に変更を要求するために、一貫性管理コマンドの一つであるＦＯＲＣＥコマンドが発行される。ＦＯＲＣＥコマンドを受けたキャッシュメモリ１０２は、該当するキャッシュラインの状態ビットをＩｎｖａｌｉｄ（無効）に更新する。
【００６５】
以上、動作停止状態にあるプロセッサ１０１に対応し、省電力状態にあるキャッシュメモリ１０２に対して、一貫性管理回路１２０から一貫性管理コマンドの発行が想定される場合について例を示した。しかし、上記制御手順はあくまでも一例であり、他の制御手順によってキャッシュデータの不一致を回避しても良い。
【００６６】
続いて、図１、２及び図５を参照して、キャッシュ電力制御回路１０３の動作について説明する。図５は省電力動作時のクロック信号及び電源の動作を説明するための図である。尚、図５はクロック及び電源の供給動作を説明するための模式的なタイミングチャートであり、図示したクロック波形は、各動作に必要なクロックサイクルを示すものではない。
【００６７】
まず、プロセッサ１０１が要求された処理を行なっている状態である通常動作時（Ｔ７０より前の時点）について説明する。クロック信号ＣＬＫ１（ＣＯＲＥ）がプロセッサ１０１に、ＣＬＫ１（ＣＡＣＨＥ）がキャッシュメモリ１０２に供給されている。また、キャッシュメモリ１０２の電源制御を行なう電源制御信号ＰＳＷ１２はＨレベルに設定され、キャッシュメモリ１０２への電源が供給されている。
【００６８】
次に、図５のＴ７０においてプロセッサ１０１が、例えば実行すべき命令がないために動作停止状態に入る場合について説明する。プロセッサ１０１は、図１のモード設定レジスタ１０５に、モード信号ＣＯＲＥ＿ＯＦＦ１がＨレベルのとなるようモード設定レジスタ１０５に設定を行なう。このＨレベルのモード信号ＣＯＲＥ＿ＯＦＦ１によりプロセッサ１０１へのクロック信号ＣＬＫ１（ＣＯＲＥ）が停止される。
【００６９】
図１の構成では、モード信号ＣＯＲＥ＿ＯＦＦ１がさらにキャッシュ電力制御回路１０３にも入力される。モード信号ＣＯＲＥ＿ＯＦＦ１がＨレベルになるとキャッシュ電力制御回路１０３はキャッシュメモリ１０２に供給されるクロック信号ＣＬＫ１（ＣＡＣＨＥ）を停止する（Ｔ７０）。その後、キャッシュ電力制御回路１０３は、キャッシュメモリの電源制御を行なう電源制御信号ＰＳＷ１２をＬレベルに設定する（Ｔ７１）。電源制御信号ＰＳＷ１２がＬレベルに設定されると、キャッシュメモリ１０２の電源スイッチ１３６（図３参照）がＯＦＦされ、キャッシュメモリ制御回路１３４への電源供給が停止される。
【００７０】
従って、本実施の形態では、プロセッサ１０１が動作停止状態に移行した場合、キャッシュメモリ１０２へ供給されるクロック信号ＣＬＫ１（ＣＡＣＨＥ）と、キャッシュメモリ１０２へ供給される電源が停止する。そのため、キャッシュメモリ１０２で消費される電力を削減できる。
【００７１】
さらに図５を参照して、省電力状態にあるキャッシュメモリ１０２に対して一貫性コマンドが発行された場合の動作について説明する。一貫性管理回路１２０がキャッシュメモリ１０２に対してＴ７２のタイミングで一貫性コマンド（ＣＯＰＹ、ＣＬＥＡＮ又はＦＯＲＣＥ）を発行すると、ＳＣＯＰバスのいずれかの信号線がＨレベルとなる。キャッシュ電力制御回路１０３は、ＳＣＯＰバスの信号線を監視し、Ｈレベルが出力されると、電源制御信号ＰＳＷ１２をＨレベルとし、供給が停止されているキャッシュメモリ１０２への電源供給を再開する。その後、キャッシュ電力制御回路１０３は、キャッシュメモリ１０２へのクロック信号ＣＬＫ１（ＣＡＣＨＥ）の供給を再開して（Ｔ７３）、キャッシュメモリ１０２を動作可能な状態に制御する。
【００７２】
ここで、図６を参照して、キャッシュ電力制御回路１０３の動作について、さらに詳細に説明する。尚、図６は各部動作を説明するための模式的なタイミングチャートであり、図示したクロック波形は、各動作に必要なクロックサイクルを示すものではない。
【００７３】
既に述べた通り、キャッシュ電力制御回路１０３は、プロセッサ１０１に入力されるクロックが停止され、また対応するキャッシュメモリ１０２に入力されるクロックと供給される電源が停止された動作停止状態に移行すると、一貫性管理バス１２２ａ上のＳＣＯＰ１バス信号と、ＳＣＣＯＲＥＲＥＡＤＹ１信号とを監視する。キャッシュ電力制御回路１０３は、一貫性管理回路１２０から一貫性コマンドが発行されたことを一貫性管理バス１２２ａ上で検出すると（Ｔ８０）、電源制御信号ＰＳＷ１２をＨレベルに切り換える。これにより、キャッシュメモリ１０２への電源供給が再開される（Ｔ８１）。
【００７４】
キャッシュ電力制御回路１０３は、キャッシュメモリ１０２への電源電圧が安定するまでの所定期間経過後、キャッシュメモリ１０２へのクロック信号ＣＬＫ１（ＣＡＣＨＥ）の供給を再開する（Ｔ８２）。この状態でキャッシュメモリ１０２は動作準備を完了する。そして、動作準備完了を示すＬレベルのＳＣＣＯＲＥＲＥＡＤＹ１信号を出力し、一貫性管理回路１２０に通知する。このＬレベルのＳＣＣＯＲＥＲＥＡＤＹ１信号を受けた一貫性管理回路１２０は、一貫性管理バス１２２ａを介し、処理に必要なデータをキャッシュメモリ１０２へ送信する。そして、キャッシュメモリ１０２は要求された処理を行なう（Ｔ８３−Ｔ８４）。
【００７５】
上記一貫性コマンドに対応したキャッシュラインの更新が完了すると、キャッシュメモリ１０２は、ＳＣＣＯＲＥＲＥＡＤＹ１信号をＨレベルに戻す（Ｔ８５）。これを受けてキャッシュ電力制御回路１０３は、キャッシュメモリ１０２に供給されるクロック信号ＣＬＫ１（ＣＡＣＨＥ）を停止する。その後、電源制御信号ＰＳＷ１２をＬレベルに戻してキャッシュメモリ１０２の一部への電源供給を停止する（Ｔ８６）。
【００７６】
上記動作により、キャッシュの一貫性を保つための制御を行なう動作中以外のキャッシュメモリ１０２の消費電力が削減されると共に、上記一貫性コマンドに応じてキャッシュラインの更新を行なうこともできるようになる。尚、キャッシュ電力制御回路１０３がキャッシュメモリ１０２へのクロック供給を停止した後、キャッシュメモリ１０２への電源供給を停止する前に、一貫性コマンドが一貫性管理回路１２０から発行される場合もありうる。この場合、キャッシュ電力制御回路１０３はキャッシュメモリ１０２への電源供給を停止せずに、キャッシュメモリ１０２へのクロック供給を再開してもよい。
【００７７】
次に、キャッシュメモリ１０２の省電力状態を解除する動作について説明する。プロセッサ１０１が動作停止状態から処理を行う通常の状態に復帰する場合には、外部からモード設定レジスタ１０５の外部信号ＩＮＴ１を制御して、モード信号ＣＯＲＥ＿ＯＦＦ１をＬレベルに設定する。キャッシュ電力制御回路１０３はモード信号ＣＯＲＥ＿ＯＦＦ１がＬレベルに設定されると、電源制御信号ＰＳＷ１２をＨレベルに設定し、キャッシュメモリ１０２への電源供給を再開した後、キャッシュメモリ１０２へのクロック信号ＣＬＫ１（ＣＡＣＨＥ）の供給を再開し、キャッシュメモリ１０２の省電力状態を解除する。
【００７８】
以上説明したように、本実施の形態によれば、プロセッサが動作停止状態に移行した場合、キャッシュメモリへのクロック供給と電源供給を停止する。そのため、キャッシュメモリの消費電力を低減できる。また、キャッシュメモリへのクロック供給と電源供給を停止中に、キャッシュデータの一貫性を保つための動作が発生した場合、キャッシュメモリへの電源供給を再開する。そのため、キャッシュデータの一貫性も維持することができる。
【００７９】
（第２の実施の形態）
第１の実施の形態では、キャッシュメモリ１０２が省電力動作をしている場合でも、記憶内容を保持するために揮発性記憶素子１３２に対して電源供給を継続する必要があった。そのため、揮発性記憶素子１３２のリーク電流が発生する。
【００８０】
そこで、本実施例では図７に示すように、揮発性記憶素子１３２に代えて不揮発性記憶素子１４２を使用し、省電力動作時にキャッシュメモリ１０２全体の電源供給を停止する。不揮発性記憶素子１４２としては、例えばＭＲＡＭ（Magnetoresistive Random Access Memory）を挙げることができる。これまで、揮発性記憶素子１３２に比べ不揮発性記憶素子１４２は、アクセス時間が長く、システムのパフォーマンスに悪影響を及ぼすレベルであった。しかし、近年実用化されているＭＲＡＭのアクセス時間はＳＲＡＭと同等程度であり、本発明への適用に好適である。
【００８１】
本実施の形態は、キャッシュメモリ１０２の不揮発性記憶素子１４２への電源供給が省電力状態に移行する際にオフされる以外は実施の形態１と同様の構成である。本実施の形態によれば、キャッシュラインの更新を行なう動作中以外のキャッシュメモリ１０２の消費電力をより一層削減できる共に、キャッシュデータの一貫性も保たれる。
【００８２】
尚、本発明は上記実施の形態に限られたものではなく、要旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記実施の形態では、キャッシュメモリの省電力制御についてクロック信号と電源の両方についてＯＮ／ＯＦＦの制御を行なっているが、クロックのＯＮ／ＯＦＦだけを行なう構成としてもよい。また、上記実施の形態では、プロセッサの省電力制御についてはクロック信号の停止によるものだけを開示しているが、キャッシュメモリと同様に電源ＯＮ／ＯＦＦ制御を行なう構成としてもよい。さらに、上記実施の形態では、キャッシュメモリ毎に１つのキャッシュ電力制御回路を有しているが、１つのキャッシュ電力制御回路に統合してもよい。また、上記実施の形態では、キャッシュラインの構成を完全連想マッピング方式でデータサイズ３２バイトの場合を例に上げて説明したが、他のキャッシュラインの構成であってもよい。
【符号の説明】
【００８３】
１０１、１１１  プロセッサ
１０２、１１２  キャッシュメモリ
１０３、１１３  キャッシュ電力制御回路
１０４、１１４  クロック制御回路
１０５、１１５  モード設定レジスタ
１２０  一貫性管理回路
１２１  システムバス
１２２ａ、１２２ｂ  一貫性管理バス
１２３  共有メモリ
１３１  揮発性メモリ
１３２  揮発性記憶素子
１３３  メモリ制御回路
１３４  キャッシュメモリ制御回路
１３５  キャッシュ制御回路
１３６  電源スイッチ
１４２  不揮発性記憶素子
１５１、１５２  タグメモリ
【図１】
2011150653.tif 000003
【図２】
2011150653.tif 000004
【図３】
2011150653.tif 000005
【図４】
2011150653.tif 000006
【図５】
2011150653.tif 000007
【図６】
2011150653.tif 000008
【図７】
2011150653.tif 000009
【図８】
2011150653.tif 000010
【図９】
2011150653.tif 000011