(57)【要約】【課題】アプリケーションの実行性能を維持又は向上させつつ、消費電力を抑制すること。【解決手段】プロセッサは、複数の階層からなるキャッシュメモリと、電力効率と、前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層とは異なる第二の階層のキャッシュメモリの状態とに基づく値と、に基づいて算出される、前記第一の階層のキャッシュメモリの貢献度に基づいて、前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定部と、を備える。【選択図】図１
2020030696.tif 000002
【特許請求の範囲】
【請求項１】
複数の階層からなるキャッシュメモリと、
任意の命令数あたりのヒット数と、前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層とは異なる第二の階層のキャッシュメモリの状態とに基づく値と、に基づいて算出される、前記第一の階層のキャッシュメモリの貢献度に基づいて、電力効率が向上するように、前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定部と、
を備えるプロセッサ。
【請求項２】
前記第一の階層のキャッシュメモリの状態と前記第二の階層のキャッシュメモリの状態とに基づく値とは、前記第一の階層のキャッシュメモリのミスペナルティを示す値であり、前記ミスペナルティは、前記第一の階層のキャッシュメモリにおけるヒット時のレイテンシと、ミスした場合に次にアクセスされる前記第二の階層のキャッシュメモリにおけるヒット時のレイテンシと、の差に基づく値である
請求項１に記載のプロセッサ。
【請求項３】
前記貢献度とは、前記ヒット数と、前記ミスペナルティと、を乗じることによって算出される値である
請求項２に記載のプロセッサ。
【請求項４】
前記複数の階層のキャッシュメモリのうち、前記貢献度が最小となるキャッシュメモリをバイパスさせた場合における消費電力あたりの第一の実行性能と、前記貢献度が最小となるキャッシュメモリをバイパスさせなかった場合における前記消費電力あたりの第二の実行性能と、を算出し、前記第二の実行性能より第一の実行性能のほうがより、性能が高い場合には、前記貢献度が最小となるキャッシュメモリをバイパスさせるバイパス制御部
をさらに備える請求項３に記載のプロセッサ。
【請求項５】
複数の階層からなるキャッシュメモリを備える多階層キャッシュメモリの制御方法であって、
前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層とは異なる第二の階層のキャッシュメモリの状態とに基づく第一の値を算出する第一算出ステップと、
任意の命令数あたりのヒット数と前記第一の値とに基づいて、前記第一の階層のキャッシュメモリの貢献度を算出する第二算出ステップと、
前記貢献度に基づいて前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定ステップと、
を有する多階層キャッシュメモリの制御方法。
【請求項６】
請求項１から請求項４のうちいずれか一項に記載のプロセッサとしてコンピュータを機能させるための多階層キャッシュメモリの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラムに関する。
【背景技術】
【０００２】
近年のマイクロプロセッサは、プロセッサとメモリとの性能差を埋めるべく、キャッシュメモリと呼ばれる一時記憶装置を有している。キャッシュメモリは、プロセッサのＬＳＩ（Large-Scale Integrated circuit；大規模集積回路）の内部に実装される。キャッシュメモリは、メインメモリと比較して高速に動作可能である。そのため、将来再利用されるデータを事前にキャッシュメモリに保持することで、メモリアクセスレイテンシを隠蔽することが可能である。一方で、キャッシュメモリは、メインメモリと比較して容量が小規模である。これに加えて、プロセッサとメモリの性能差は拡大の一途を辿っている。これらのことから、近年のマイクロプロセッサでは、キャッシュメモリを多階層化することにより、大容量化とメモリアクセスレイテンシの隠蔽を図っている。
【０００３】
多階層キャッシュメモリは、プロセッサ内の演算コアとプロセッサ外のメインメモリとの間に配置される。多階層キャッシュメモリは、演算コアに近い方から１次キャッシュメモリ、２次キャッシュメモリ、３次キャッシュメモリと、その階層に応じて次数を増加させる形で構成される。多階層キャッシュメモリは、次数の増加に応じて記憶容量が増加する一方で、次数の増加に応じて読み出しにかかる遅延時間が増加する。
【０００４】
例えば、３階層のキャッシュメモリにおいてメモリアクセスが発生し、このメモリアクセスが、データを読み出すロード命令であるものとする。
この場合、まず初めに１次キャッシュメモリに対して、演算コアが要求するデータの有無の確認がなされる。演算コアが要求するデータが１次キャッシュメモリに保持されている場合には、１次キャッシュメモリから演算コアへデータが提供される。演算コアが要求するデータが１次キャッシュメモリに保持されていない場合には、次に２次キャッシュメモリに対して確認がなされる。演算コアが要求するデータが２次キャッシュメモリに保持されている場合には、２次キャッシュメモリから演算コアへデータが提供される。演算コアが要求するデータが２次キャッシュメモリにも保持されていない場合には、さらに下層の３次キャッシュメモリに対して確認がなされる。演算コアが要求するデータが３次キャッシュメモリに保持されている場合には、３次キャッシュメモリから演算コアへデータが提供される。これにより、キャッシュメモリは、メモリアクセスレイテンシの隠蔽を段階的に行う。演算コアが要求するデータが３次キャッシュメモリにも保持されていない場合には、メインメモリから演算コアへデータが提供される。
このように、キャッシュメモリにデータが保存されていれば、メインメモリにアクセスすることなく、演算コアに対してデータを提供することが可能になる。これにより、メモリアクセスレイテンシを隠蔽することが可能になる。
【０００５】
キャッシュメモリの多階層化が進むことに伴って、記憶容量、読み出しにかかる遅延時間、及び消費電力は、増加する傾向にある。その結果として、マイクロプロセッサにおける消費電力は、キャッシュメモリの消費電力が支配的になりつつある。その一方で、マイクロプロセッサにおいて実行されるアプリケーションは、多岐にわたる様々な特性を有している。多階層キャッシュメモリを活用することによって実行性能を向上させることが可能なアプリケーションがある一方で、計算が支配的であり、かつメモリ利用量が少ないアプリケーション等がある。例えばこのような、計算が支配的であり、かつメモリ利用量が少ないアプリケーション等においては、実行性能の向上に対する多階層キャッシュメモリの貢献は限定的である。この場合、実行性能の向上に貢献しないキャッシュメモリによって電力が無駄に消費されるため、マイクロプロセッサにおける電力効率の低下を招くことになる。
【０００６】
このように、マイクロプロセッサに搭載されるキャッシュメモリの容量・消費電力が増加の一途を辿っている中で、アプリケーションによっては、キャッシュメモリに対する電力投資に見合うだけの実行性能の向上が得られずに、マイクロプロセッサの電力効率の低下を引き起こしている。これに対し、非特許文献１に記載の技術は、ｎ階層キャッシュメモリにおいて、最大容量を有するｎ次キャッシュメモリ（最下層のキャッシュメモリ）にデータを書き込まずに、メインメモリに直接データを書き込むバイパス処理を行う。そして、ｎ次キャッシュメモリへの電源供給を停止することによって、マイクロプロセッサの消費電力を削減する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Takumi Takai, Yusuke Tobo, Masayuki Sato, Ryusuke Egawa, Hiroyuki Takizawa and Hiroaki Kobayashi, “A Bypass Mechanism for Way-Adaptable Caches”, Poster11, Proceedings of COOL Chips XV, April 2012.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、実行性能を維持又は向上させるために必要なキャッシュメモリの、記憶容量、レイテンシ、及び階層数は、アプリケーションによってそれぞれ異なる。このため、キャッシュメモリの最下層のみに対してバイパス制御及び電力制御を行うだけでは、多様なアプリケーションに対応するための柔軟性が低いという課題がある。さらに、特定のキャッシュメモリをバイパスすることが、実行性能を維持しながら消費電力を抑制することにつながるか否かを事前に判断することが難しいという課題がある。
【０００９】
本発明はこのような状況を鑑みてなされたもので、アプリケーションの実行性能を維持又は向上させつつ、消費電力を抑制することができる技術の提供を目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様は、複数の階層からなるキャッシュメモリと、任意の命令数あたりのヒット数と、前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層とは異なる第二の階層のキャッシュメモリの状態とに基づく値と、に基づいて算出される、前記第一の階層のキャッシュメモリの貢献度に基づいて、前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定部と、を備えるプロセッサである。
【００１１】
また、本発明の一態様は、上記のプロセッサであって、前記第一の階層のキャッシュメモリの状態と前記第二の階層のキャッシュメモリの状態とに基づく値とは、前記第一の階層のキャッシュメモリのミスペナルティと任意の命令数あたりのヒット数を示す値であり、前記ミスペナルティは、前記第一の階層のキャッシュメモリにおけるヒット時のレイテンシと、ミスした場合に次にアクセスされる前記第二の階層のキャッシュメモリにおけるヒット時のレイテンシと、の差に基づく値である。
【００１２】
また、本発明の一態様は、上記のプロセッサであって、前記貢献度とは、前記任意の命令数あたりのヒット数と、前記ミスペナルティと、を乗じることによって算出される値である。
【００１３】
また、本発明の一態様は、上記のプロセッサであって、前記複数の階層のキャッシュメモリのうち、前記貢献度が最小となるキャッシュメモリをバイパスさせた場合における消費電力あたりの第一の実行性能と、前記貢献度が最小となるキャッシュメモリをバイパスさせなかった場合における前記消費電力あたりの第二の実行性能と、を算出し、前記第二の実行性能より第一の実行性能のほうがより、性能が高い場合には、前記貢献度が最小となるキャッシュメモリをバイパスさせるバイパス制御部をさらに備える。
【００１４】
また、本発明の一態様は、複数の階層からなるキャッシュメモリを備える多階層キャッシュメモリの制御方法であって、前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層とは異なる第二の階層のキャッシュメモリの状態とに基づく第一の値を算出する第一算出ステップと、前記第一の値とに基づいて、前記第一の階層のキャッシュメモリの貢献度を算出する第二算出ステップと、前記貢献度に基づいて前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定ステップと、を有する多階層キャッシュメモリの制御方法である。
【００１５】
また、本発明の一態様は、上記のプロセッサとしてコンピュータを機能させるための多階層キャッシュメモリの制御プログラム。
【発明の効果】
【００１６】
本発明によれば、アプリケーションの実行性能を維持又は向上させつつ、消費電力を抑制することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係る多階層キャッシュメモリを搭載したマイクロプロセッサの構成を説明するための図である。
【図２】本発明の一実施形態に係るマイクロプロセッサが備えるバスセレクタの入出力の構成を説明するための図である。
【図３】本発明の一実施形態に係るマイクロプロセッサによる多階層キャッシュメモリへの電力供給制御の構成を説明するための図である。
【図４】本発明の一実施形態に係るマイクロプロセッサ１００によって実現可能な多階層キャッシュメモリの論理的な構成を示す模式図である。
【図５】各階層のキャッシュメモリの構成、階層数、及び各制御信号の値との対応を示す図である。
【図６】本発明の一実施形態に係るマイクロプロセッサ１００に搭載された多階層キャッシュメモリを制御する多階層キャッシュメモリ制御部の構成を示すブロック図である。
【図７】本発明の一実施形態に係るマイクロプロセッサによるキャッシュ階層の要否判定処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１８】
＜実施形態＞
以下、本発明の一実施形態について図面を参照しながら説明する。
以下の説明において、「マイクロプロセッサ」は、単一又は複数の演算コア（以下、「コア」という。）と、ｎ層からなる階層型のキャッシュメモリ（以下、「多階層キャッシュメモリ」という。）と、を搭載しているものとする。また、多階層キャッシュメモリの各階層は、最上層のキャッシュメモリ（１次キャッシュメモリ）から最下層のキャッシュメモリ（ｎ次キャッシュメモリ）へと階層が増加するほど、記憶容量はより大きくなり、アクセス遅延時間はより長くなるものとする。
【００１９】
［マイクロプロセッサの構成］
以下、多階層キャッシュメモリを搭載したマイクロプロセッサの構成の一例について説明する。
図１は、本発明の一実施形態に係る多階層キャッシュメモリを搭載したマイクロプロセッサの構成を説明するための図である。
以下の説明において、ｍ次キャッシュメモリ（ｍは１からｎまでの整数）を、「Ｌｍキャッシュ」ということがある。
【００２０】
図１に示すように、マイクロプロセッサ１００は、コア１０１と、Ｌ１キャッシュ１０２と、Ｌ２キャッシュ１０３と、Ｌ３キャッシュ１０４と、Ｌ４キャッシュ１０５と、第０バスセレクタ１０７と、第１バスセレクタ１０８と、第２バスセレクタ１０９と、第３バスセレクタ１１０と、を含んで構成される。すなわち、マイクロプロセッサ１００は、４層からなる多階層キャッシュメモリを搭載したプロセッサである。
【００２１】
また、図１に示すバス１１１〜１１８は、データ転送用の広帯域伝送路である。
【００２２】
コア１０１は、バス１１１を介して第０バスセレクタ１０７と接続する。
【００２３】
Ｌ１キャッシュ１０２は、バス１１２を介して第０バスセレクタ１０７と接続し、バス１１７を介して第１バスセレクタ１０８と接続する。
【００２４】
Ｌ２キャッシュ１０３は、バス１１３を介して第０バスセレクタ１０７と接続し、バス１１８を介して第１バスセレクタ１０８と接続し、バス１２２を介して第２バスセレクタ１０９と接続する。
【００２５】
Ｌ３キャッシュ１０４は、バス１１４を介して第０バスセレクタ１０７と接続し、バス１１９を介して第１バスセレクタ１０８と接続し、バス１２３を介して第２バスセレクタ１０９と接続し、バス１２６を介して第３バスセレクタ１１０と接続する。
【００２６】
Ｌ４キャッシュ１０５は、バス１１５を介して第０バスセレクタ１０７と接続し、バス１２０を介して第１バスセレクタ１０８と接続し、バス１２４を介して第２バスセレクタ１０９とし、バス１２７を介して第３バスセレクタ１１０と接続する。
【００２７】
メインメモリ１０６は、バス１１６を介して第０バスセレクタ１０７と接続し、バス１２１を介して第１バスセレクタ１０８と接続し、バス１２５を介して第２バスセレクタ１０９と接続し、バス１２８を介して第３バスセレクタ１１０と接続し、バス１２９を介してＬ４キャッシュ１０５と接続する。
【００２８】
第０バスセレクタ１０７、第１バスセレクタ１０８、第２バスセレクタ１０９、及び第３バスセレクタ１１０は、マルチプレクサから構成されている。
【００２９】
第０バスセレクタ１０７は、バイパス制御部１３０から第０バスセレクタ１０７へ付与される制御信号である制御信号ＳＣ＿０に基づいて、上層にあるコア１０１及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【００３０】
第１バスセレクタ１０８は、バイパス制御部１３０から第１バスセレクタ１０８へ付与される制御信号である制御信号ＳＣ＿１に基づいて、上層にあるコア１０１及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【００３１】
第２バスセレクタ１０９は、バイパス制御部１３０から第２バスセレクタ１０９へ付与される制御信号である制御信号ＳＣ＿２に基づいて、上層にあるコア１０１及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【００３２】
第３バスセレクタ１１０は、バイパス制御部１３０から第３バスセレクタ１１０へ付与される制御信号である制御信号ＳＣ＿３に基づいて、上層にあるコア１０１及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【００３３】
［バスセレクタの入出力の構成］
以下、バスセレクタの入出力の構成の一例について説明する。
図２は、本発明の一実施形態に係るマイクロプロセッサが備えるバスセレクタの入出力の構成を説明するための図である。
【００３４】
第０バスセレクタ１０７は、コア１０１からバス１１１を介して入力されるデータを入力とする。また、第０バスセレクタ１０７は、バイパス制御部１３０が付与する３ビットの制御信号ＳＣ＿０に基づいて、データの出力先とするバス（バス１１２〜１１６のいずれか）を選択する。
【００３５】
例えば、第０バスセレクタ１０７は、入力された制御信号ＳＣ＿０が示す値が「０００」である場合には、データの出力先として、Ｌ１キャッシュ１０２に接続するバス１１２を選択する。
また、例えば、第０バスセレクタ１０７は、入力された制御信号ＳＣ＿０が示す値が「００１」である場合には、データの出力先として、Ｌ２キャッシュ１０３に接続するバス１１３を選択する。
また、例えば、第０バスセレクタ１０７は、入力された制御信号ＳＣ＿０が示す値が「０１０」である場合には、データの出力先として、Ｌ３キャッシュ１０４に接続するバス１１４を選択する。
また、例えば、第０バスセレクタ１０７は、入力された制御信号ＳＣ＿０が示す値が「０１１」である場合には、データの出力先として、Ｌ４キャッシュ１０５に接続するバス１１５を選択する。
また、例えば、第０バスセレクタ１０７は、入力された制御信号ＳＣ＿０が示す値が「１００」である場合には、データの出力先として、メインメモリ１０６に接続するバス１１６を選択する。
なお、例えば、第０バスセレクタ１０７は、入力された制御信号ＳＣ＿０が示す値が「１０１」である場合には、データの出力先を選択せずに下層へのバス接続を切断する。
【００３６】
第１バスセレクタ１０８は、Ｌ１キャッシュ１０２からバス１１７を介して入力されるデータを入力とする。また、第１バスセレクタ１０８は、バイパス制御部１３０が付与する３ビットの制御信号ＳＣ＿１に基づいて、データの出力先とするバス（バス１１８〜１２１のいずれか）を選択する。
【００３７】
例えば、第１バスセレクタ１０８は、入力された制御信号ＳＣ＿１が示す値が「０００」である場合には、データの出力先として、Ｌ２キャッシュ１０３に接続するバス１１８を選択する。
また、例えば、第１バスセレクタ１０８は、入力された制御信号ＳＣ＿１が示す値が「００１」である場合には、データの出力先として、Ｌ３キャッシュ１０４に接続するバス１１９を選択する。
また、例えば、第１バスセレクタ１０８は、入力された制御信号ＳＣ＿１が示す値が「０１０」である場合には、データの出力先として、Ｌ４キャッシュ１０５に接続するバス１２０を選択する。
また、例えば、第１バスセレクタ１０８は、入力された制御信号ＳＣ＿１が示す値が「０１１」である場合には、データの出力先として、メインメモリ１０６に接続するバス１２１を選択する。
【００３８】
第２バスセレクタ１０９は、Ｌ２キャッシュ１０３からバス１２２を介して入力されるデータを入力とする。また、第２バスセレクタ１０９は、バイパス制御部１３０が付与する２ビットの制御信号ＳＣ＿２に基づいて、データの出力先とするバス（バス１２３〜１２５のいずれか）を選択する。
【００３９】
例えば、第２バスセレクタ１０９は、入力された制御信号ＳＣ＿２が示す値が「００」である場合には、データの出力先として、Ｌ３キャッシュ１０４に接続するバス１２５を選択する。
また、例えば、第２バスセレクタ１０９は、入力された制御信号ＳＣ＿２が示す値が「０１」である場合には、データの出力先として、Ｌ４キャッシュ１０５に接続するバス１２４を選択する。
また、例えば、第２バスセレクタ１０９は、入力された制御信号ＳＣ＿２が示す値が「１０」である場合には、データの出力先として、メインメモリ１０６に接続するバス１２５を選択する。
【００４０】
第３バスセレクタ１１０は、Ｌ３キャッシュ１０４からバス１２６を介して入力されるデータを入力とする。また、第３バスセレクタ１１０は、バイパス制御部１３０が付与する２ビットの制御信号ＳＣ＿３に基づいて、データの出力先とするバス（バス１２７〜１２８のいずれか）を選択する。
【００４１】
例えば、第３バスセレクタ１１０は、入力された制御信号ＳＣ＿３が示す値が「００」である場合には、データの出力先として、Ｌ４キャッシュ１０５に接続するバス１２７を選択する。
また、例えば、第３バスセレクタ１１０は、入力された制御信号ＳＣ＿３が示す値が「０１」である場合には、データの出力先として、メインメモリ１０６に接続するバス１２８を選択する。
【００４２】
［多階層キャッシュメモリへの電力供給制御の構成］
以下、多階層キャッシュメモリへの電力供給制御の構成の一例について説明する。
図３は、本発明の一実施形態に係るマイクロプロセッサによる多階層キャッシュメモリへの電力供給制御の構成を説明するための図である。
【００４３】
図３に示すように、電力制御部１３１は、マイクロプロセッサ１００に搭載された多階層キャッシュメモリのうちバイパスされた階層のキャッシュメモリへの電力供給を行うか否かを示す電力制御信号（電力制御信号ＰＣ＿Ｌ１〜ＰＣ＿Ｌ４）を、各階層のキャッシュメモリ（Ｌ１キャッシュ１０２〜Ｌ４キャッシュ１０５）に付与する。
【００４４】
図３に示すように、Ｌ１キャッシュ１０２、Ｌ２キャッシュ１０３、Ｌ３キャッシュ１０４及びＬ４キャッシュ１０５に入力される電力制御信号は、それぞれ、電力制御信号ＰＣ＿Ｌ１、電力制御信号ＰＣ＿Ｌ２、電力制御信号ＰＣ＿Ｌ３及び電力制御信号ＰＣ＿Ｌ４である。これらの電力制御信号（電力制御信号ＰＣ＿Ｌ１〜ＰＣ＿Ｌ４）は、例えば、１ビットのデータである。
【００４５】
キャッシュメモリに入力された電力制御信号の値が「０」である場合、キャッシュメモリへの電力供給が停止され、キャッシュメモリが無効化される。一方、キャッシュメモリに入力された電力制御信号の値が「１」であるならば、キャッシュメモリへの電力供給が行われ、キャッシュメモリが有効化される。なお、電力制御の方法そしては、例えば、パワーゲーティング等を用いた電力管理手法を適用することが考えられる。
【００４６】
ここで、例えば、バイパス制御部１３０が、Ｌ２キャッシュ１０３をバイパスし、キャッシュ階層を、Ｌ１キャッシュ１０２、Ｌ３キャッシュ１０４及びＬ４キャッシュ１０５の３階層に再構成する場合を考える。
【００４７】
この場合、バイパス制御部１３０は、第０バスセレクタ１０７に対し、制御信号ＳＣ＿０の値として「０００」を付与する。これにより、第０バスセレクタ１０７とＬ１キャッシュ１０２とを接続するバス１１２が、データの出力先として選択される。Ｌ１キャッシュ１０２へ入力されたデータは、バス１１７を介して第１バスセレクタ１０８に入力される。
【００４８】
Ｌ２キャッシュ１０３にはデータを書き込まずにバイパスするため、バイパス制御部１３０は、第１バスセレクタ１０８に対し、制御信号ＳＣ＿１の値として「００１」を付与する。これにより、第１バスセレクタ１０８とＬ３キャッシュ１０４とを接続するバス１１９が、データの出力先として選択される。Ｌ３キャッシュ１０４へ入力されたデータは、バス１２６を介して第３バスセレクタ１１０に入力される。
【００４９】
このとき、バス１２２を経由するバスは不要となるため、バイパス制御部１３０は、第２バスセレクタ１０９に対し、制御信号ＳＣ＿２の値として「１１」を付与する。これにより、バス１２３、バス１２４及びバス１２５への接続が切断される。
【００５０】
バイパス制御部１３０は、第３バスセレクタ１１０に対し、制御信号ＳＣ＿３の値として「００１」を付与する。これにより、第３バスセレクタ１１０とＬ４キャッシュ１０５とを接続するバス１２７が、データの出力先として出力先として選択される。Ｌ４キャッシュ１０５へ入力されたデータは、バス１２９を介してメインメモリ１０６に入力される。
【００５１】
次に、図３に示した電力制御部１３１は、Ｌ２キャッシュ１０３に対して、Ｌ２キャッシュ１０３への電力供給を行わないこと示す（すなわち、値が「０」である）電力制御信号ＰＣ＿Ｌ２を付与する。これにより、バイパスされたＬ２キャッシュ１０３のデータアレイに対する電力供給が遮断され、Ｌ２キャッシュ１０３が無効化される。
【００５２】
以上説明したように、本発明の一実施形態によるマイクロプロセッサは、搭載している多階層キャッシュメモリのバスセレクタ（第０バスセレクタ１０７〜第３バスセレクタ１１０）を制御することによって、各階層のキャッシュメモリ同士の間の接続及び切断を制御することができる。これにより、各階層のキャッシュメモリ同士の間、各階層のキャッシュメモリとメインメモリ１０６との間、及び、各階層のキャッシュメモリとコア１０１との間の接続及び切断を任意に行うことが可能になり、キャッシュメモリの構成を柔軟に変更すること可能になる。
【００５３】
［多階層キャッシュメモリの構成例］
以下、上記説明したマイクロプロセッサ１００の４階層からなる多階層キャッシュメモリによって実現しうる論理的な構成の一例について説明する。
図４は、本発明の一実施形態に係るマイクロプロセッサ１００によって実現可能な多階層キャッシュメモリの論理的な構成を示す模式図である。
【００５４】
図４は、４階層からなる多階層キャッシュメモリによって実現しうる、（１）から（１６）までの全１６通りの論理的な構成を示している。なお、図４における「Ｌ１Ｓ」〜「Ｌ４Ｓ」の表記は、それぞれ上述した「Ｌ１キャッシュ」〜「Ｌ４キャッシュ」のキャッシュ階層を示す。
【００５５】
また、図４において、網掛けがなされたキャッシュ階層は、バイパスされることによってデータが書き込まれることのない、電源供給が遮断されたキャッシュ階層を表している。一方、網掛けがなされていないキャッシュ階層は、バイパスされることなく活性化しているキャッシュ階層を表している。各階層のキャッシュメモリが、それぞれバイパスされるか否かの２通りの状態をとりうることから、上述した４階層からなる多階層キャッシュメモリは、全２４通り（すなわち、１６通り）の論理的な構成を実現することができる。
【００５６】
図５は、各階層のキャッシュメモリの構成、階層数、及び各制御信号の値との対応を示す図である。図５に示すテーブルは、多階層キャッシュメモリの論理的な構成を、図４に示した（１）から（１６）までの構成にした場合における、活性化されたキャッシュ階層の階層数、及び、（１）から（１６）までの構成にするための制御信号（制御信号ＳＣ＿００〜ＳＣ＿０３）の値を表している。
【００５７】
図４及び図５に示すように、例えば、多階層キャッシュメモリの論理的な構成を（１）の構成とした場合（すなわち、キャッシュメモリのバイパスを行わない場合）、活性化されたキャッシュ階層の階層数は「４」である。また、多階層キャッシュメモリの論理的な構成を（１）の構成とするためには、制御信号ＳＣ＿００の値を「０００」とし、制御信号ＳＣ＿０１の値を「０００」とし、制御信号ＳＣ＿０２の値を「００」とし、及び、制御信号ＳＣ＿０３の値を「０００」とすればよい。
【００５８】
また、例えば、多階層キャッシュメモリの論理的な構成を（２）の構成とした場合（すなわち、Ｌ２キャッシュのみをバイパスする場合）、活性化されたキャッシュ階層の階層数は「３」である。また、多階層キャッシュメモリの論理的な構成を（１）の構成とするためには、制御信号ＳＣ＿００の値を「０００」とし、制御信号ＳＣ＿０１の値を「００１」とし、制御信号ＳＣ＿０２の値を「００」とし、及び、制御信号ＳＣ＿０３の値を「０００」とすればよい。
【００５９】
以上説明したように、マイクロプロセッサ１００は、コア１０１、各キャッシュ階層（Ｌ１キャッシュ１０２〜Ｌ４キャッシュ１０５）、及びメインメモリ１０６の間をバスによって接続可能な構成であり、マイクロプロセッサ１００が実行するアプリケーションに応じてそれぞれのバスの接続状態を制御することができる。
【００６０】
これにより、マイクロプロセッサ１００は、任意のキャッシュ階層へのデータの書き込みを回避させる（任意のキャッシュ階層をバイパスさせる）ことができ、バイパスさせたキャッシュ階層よりも上層の階層（キャッシュ階層又はコア１０１）と、バイパスさせたキャッシュ階層よりも下層にある全ての階層（キャッシュ階層又はメインメモリ１０６）と、を接続させることができる。
【００６１】
これにより、多階層キャッシュメモリがｎ階層である場合には、全２ｎ通りの論理的な構成をとることが可能となる。以上説明したマイクロプロセッサ１００によれば、マイクロプロセッサ１００が実行するアプリケーション（及びデータアクセスパターン）に応じて適切な構成となるように、多階層キャッシュメモリの論理的な構成を柔軟に変化させることができる。
【００６２】
ここで、アプリケーションに応じて適切な構成とは、マイクロプロセッサ１００による処理の実行性能を維持又は向上させつつ、消費電力を抑制させる構成である。そのため、アプリケーションに応じて適切な構成を選択するためには、実行性能を示す指標と消費電力とを評価する必要がある。
【００６３】
ここでは、実行性能を示す指標として、各キャッシュ階層がどれだけメモリアクセスレイテンシを隠蔽できるかを表すＨＬＰＫＩ（Hidden access Latency Per Kilo-Instruction）を用いる。マイクロプロセッサ１００は、ＨＬＰＫＩに基づいて、ｍ階層からなる多階層キャッシュメモリの各キャッシュ階層の要否判定（バイパスさせるか否かの判定）を行う。これにより、アプリケーションの実行性能を最大化させつつ、消費電力を抑制することができる、多階層キャッシュメモリの構成を決定する。
【００６４】
第ｎ階層のキャッシュメモリ（ｎ次キャッシュメモリ）におけるＨＬＰＫＩを示すＨＬＰＫＩｎは、以下の式（１）によって導出される。
【００６５】
ＨＬＰＫＩｎ＝ＨＰＫＩｎ×ＭＰｎ      ・・・（１）
【００６６】
ＨＬＰＫＩｎは、ｎ次キャッシュメモリが１０００命令あたりに隠蔽可能なメモリアクセスレイテンシを表す。ここで、ｎは、１から始まる正の整数であり、キャッシュ階層数ｍを最大値とする。
【００６７】
式（１）のＨＰＫＩｎは、ｎ次キャッシュメモリにおける、１０００命令あたりのヒット数である。ここで、ヒット数とはヒットした数であり、ヒットとは、ある階層のキャッシュメモリにアクセスした際に、当該キャッシュにデータが存在し、当該キャッシュから当該データを供給することを示す。一方、当該キャッシュメモリにデータが存在せず、一つ下のキャッシュ階層又はメインメモリ１０６へアクセスする事象を、ミスと呼ぶものとする。
【００６８】
ＨＰＫＩｎの値が十分に大きい場合、ｎ次キャッシュメモリへアクセスされる頻度及びヒット率の双方が高い。そのため、ｎ次キャッシュメモリを使用することで、（ｎ＋１）次のキャッシュメモリ又はメインメモリ１０６へのアクセスレイテンシが隠蔽され、アプリケーションの実行時間の短縮が期待できる。したがって、ＨＰＫＩｎの値が十分に大きい場合、ｎ次キャッシュメモリを使用する（バイパスしない）と判断することができる。
【００６９】
一方、ＨＰＫＩｎの値が小さい場合、ｎ次キャッシュメモリへのアクセス数が少ないこと、又は、ｎ次キャッシュメモリへのアクセス数は少なくないがヒット率が低いこと、のいずれかが考えられる。どちらの場合であっても、ｎ次キャッシュメモリを使用しても、下層である（ｎ＋１）次キャッシュメモリへのアクセス数は減少しにくい。したがって、ＨＰＫＩｎの値が小さい場合、ｎ次キャッシュメモリを使用しない（バイパスする）と判断することができる。
【００７０】
このように、ＨＰＫＩｎは、プロセッサとメモリとから構成されるコンピュータシステムにおいて、ｎ次キャッシュメモリを有効化又は無効化することによる実行性能の性能予測の指標の一つとして活用することができる。
【００７１】
また、式（１）のＭＰｎは、ｎ次キャッシュメモリのミスペナルティを示す。ＭＰｎは、ｎ次キャッシュメモリにおけるヒット時のレイテンシと、ミスした場合に次にアクセスされる、（ｎ＋１）次キャッシュメモリ又はメインメモリ１０６におけるヒット時のレイテンシと、の差により求められる。
【００７２】
ミスペナルティが大きい場合、ｎ次キャッシュメモリが一回のヒット時において隠蔽可能なアクセスレイテンシは大きい。そのため、ＨＰＫＩｎが低い場合であっても、当該キャッシュ階層によりアクセスレイテンシが十分に隠蔽可能な場合は、システムの実行性能が向上する。一方、ミスペナルティが小さい場合、一回のヒットがシステムの実行性能に与える影響は限定的であるため、ＨＰＫＩｎが高い場合であっても、当該キャッシュ階層の実行性能向上への貢献度は低い。
【００７３】
以上のことから、ＨＰＫＩｎとミスペナルティとの二つの指標を乗じることによって、システムの実行性能の向上に対する貢献度が低いキャッシュ階層を識別することが可能になる。
【００７４】
［多階層キャッシュメモリ制御部の構成］
以下、多階層キャッシュメモリを制御する多階層キャッシュメモリ制御部の構成について説明する。
図６は、本発明の一実施形態に係るマイクロプロセッサ１００に搭載された多階層キャッシュメモリを制御する多階層キャッシュメモリ制御部の構成を示すブロック図である。
【００７５】
上記において、図１を参照しながら説明した各キャッシュ階層は、図６に示す多階層キャッシュメモリ制御部３００を備える。
図６に示すように、多階層キャッシュメモリ制御部３００は、ヒット・カウンタ３０１と、命令数カウンタ３０２と、ミスペナルティテーブル３０３と、ＨＰＫＩ（Hit Per Kilo-Instruction）導出部３０４と、ＨＬＰＫＩ導出部３０５と、キャッシュメモリ部３０９と、を含んで構成される。また、キャッシュメモリ部３０９は、データアレイ３１２を含んで構成される。
【００７６】
マイクロプロセッサ１００において命令が実行される度に、コア１０１と各キャッシュ階層を結ぶ制御線を介して、実行命令数が各キャッシュ階層に転送される。多階層キャッシュメモリ制御部３００の命令数カウンタ３０２は、実行命令数を記録する。
【００７７】
また、コア１０１において、メモリアクセス命令（メモリからデータを読み出すロード命令）が実行される。メモリアクセス命令が求めるデータが当該キャッシュ階層に保存されている場合には、ヒット・カウンタ３０１は記録しているヒット数の値を一つ増加させる。
【００７８】
命令数カウンタ３０２が保持する値が１０００に達した場合、ヒット・カウンタ３０１からＨＰＫＩ導出部３０４へ、１０００命令あたりのヒット数であるＨＰＫＩｎの値を示す情報が転送される。ＨＰＫＩｎの値を示す情報は、ＨＰＫＩ導出部３０４において保持される。このとき、命令数カウンタ３０２が保持する実行命令数を示す値は、０にリセットされる。
【００７９】
ミスペナルティテーブル３０３には、各キャッシュ階層におけるミスペナルティ（ＭＰｎ）が保存されている。１０００命令毎に、ＨＬＰＫＩ導出部３０５は、ＨＰＫＩ導出部３０４から入力されたＨＰＫＩｎの値と、ミスペナルティテーブル３０３が保持しているＭＰｎの値と、を乗じることによってＨＬＰＫＩｎの値を導出する。
【００８０】
その後、全キャッシュ階層のＨＬＰＫＩｎの値を示す情報が、コア１０１及びバイパス制御部１３０へ送信される。コア１０１とバイパス制御部１３０とにおいて、ＨＬＰＫＩの値が最小となるキャッシュ階層をバイパスするか否かの判定が行われる。
【００８１】
ＨＬＰＫＩの値が最小となるキャッシュ階層をバイパスし、当該キャッシュ階層に対してデータの書き込みを行わないと判定された場合、バイパス制御部１３０は、当該キャッシュ階層より上層のキャッシュ階層と、当該キャッシュ階層より下層のキャッシュ階層又はメインメモリ１０６と、の間の接続を、バスセレクタ（第０バスセレクタ１０７、第１バスセレクタ１０８、第２バスセレクタ１０９、及び第３バスセレクタ１１０）を制御することによって切断する。これにより、バイパス制御部１３０は、当該キャッシュ階層がバイパスされ、上層のキャッシュ階層と、下層のキャッシュ階層又はメインメモリ１０６と、を接続する。
【００８２】
この後、電力制御部１３１は、バイパスされたキャッシュ階層のキャッシュメモリ部３０９への電力供給を遮断する。そして、電力制御スイッチ３１３に対して、電力制御信号ＰＣ＿Ｌｎ（ｎはキャッシュ階層の次数）の値として「０」が付与され、キャッシュメモリ部３０９のデータアレイ３１２へのデータ供給が遮断される。
【００８３】
［キャッシュ階層の要否判定処理］
以下、各キャッシュ階層の要否を判定する判定処理について説明する。
図７は、本発明の一実施形態に係るマイクロプロセッサによるキャッシュ階層の要否判定処理の流れを示すフローチャートである。以下に示す要否判定処理は、コア１０１及びバイパス制御部１３０によって行われる。
【００８４】
マイクロプロセッサ１００によってアプリケーションが実行されると、ＨＰＫＩ導出部３０４は、ＨＰＫＩの値を算出する（ステップＳ１０１）。なお、上述したように、ＨＰＫＩとは、ここでは、１０００命令あたりのヒット数のことである。
【００８５】
次に、ＨＬＰＫＩ導出部３０５は、各キャッシュ階層のＨＬＰＫＩの値を算出する（ステップＳ１０２）。なお、上述したように、ＨＬＰＫＩとは、ここでは、判定対象のキャッシュ階層のＨＰＫＩとミスペナルティとを乗じた値である。
【００８６】
次に、バイパス制御部１３０は、全てのキャッシュ階層のＨＬＰＫＩの値を集約し、最小のＨＬＰＫＩの値を有するキャッシュ階層を特定し、選択する（ステップＳ１０３）。
【００８７】
次に、コア１０１は、ステップＳ１０３において特定された最小のＨＬＰＫＩの値を有するキャッシュ階層をバイパスして無効化させた場合における、マイクロプロセッサ１００のエネルギー効率（エネルギーあたりの実行性能）を評価する。
【００８８】
エネルギー効率が向上すると評価された場合（ステップＳ１０４・Ｙｅｓ）、ＨＬＰＫＩの値が最小となる当該キャッシュ階層をバイパスして無効化させ、電力供給を遮断する（ステップＳ１０５）。そして、エネルギー効率が低下するキャッシュ構成が決定するまで上記の処理（ステップＳ１０１〜ステップＳ１０４）を繰り返す。
【００８９】
一方、エネルギー効率が低下すると評価された場合（ステップＳ１０４・Ｎｏ）、バイパスを行わず、以上の処理によって得られたキャッシュメモリの構成を最終的な構成として決定する。
以上で、図７に示すフローチャートの処理が終了する。
【００９０】
なお、キャッシュメモリの構成を決定するためには、エネルギーあたりの実行性能を求める必要があるが、実行性能の指標として、１サイクルあたりの実行命令数を表すＩＰＣ（Instructions Per Cycle）を用いることができる。また、ＩＰＣの測定手段として、プログラムの事前実行によるプロファイリング、又は、近年のマイクロプロセッサが具備するハードウェアカウンタを用いることができる。また、消費エネルギーは、マイクロプロセッサが有するハードウェアカウンタ及び電力モニタリングツールと、プログラムの実行時間と、基づいて測定することができる。
【００９１】
なお、アプリケーションを事前に実行して図７に示した処理を行うことによってアプリケーションに適したキャッシュ構成を選択した後に静的に処理を行うことができるだけでなく、マイクロプロセッサ１００のコア１０１において上記の実行性能及び消費エネルギーの解析を動的に実行させる構成にすることも可能である。
【００９２】
なお、上述した実施形態においては、ＨＬＰＫＩｎは、第ｎ層のキャッシュメモリが１０００命令あたりに隠蔽可能なメモリアクセスレイテンシを表すものとし、ＨＰＫＩｎは、第ｎ層のキャッシュメモリにおける１０００命令あたりのヒット数であるものとしたが、これに限られるものではない。すなわち、上述した実施形態においては、各キャッシュ階層を用いるか否かを判定する基準を１０００命令程度しているが、これに限られるものではない。所定の回数内でのキャッシュ階層間における貢献度に基づいて、階層毎に、各キャッシュ階層を使用するか否かを判定する構成であればよく、所定の回数は必ずしも１０００回ではなくてもよい。
【００９３】
以上説明したように、本発明の一実施形態による多階層キャッシュメモリの制御方法によれば、キャッシュ階層ごとに、ＩＰＣと電力とに基づいて、使用するキャッシュメモリ及びバイパスするキャッシュメモリが決定される。これにより、使用するキャッシュ階層を、アプリケーションごとに適応的に制御することができ、マイクロプロセッサ１００に搭載される多階層キャッシュメモリの構造を、アプリケーションに応じて再構成できるようになる。以上の構成により、本発明の一実施形態による多階層キャッシュメモリの制御方法によれば、アプリケーションの実行性能を維持又は向上させつつ、マイクロプロセッサ１００の消費電力を抑制することができ、マイクロプロセッサ１００の電力効率を向上させることができる。
【００９４】
なお、本発明の一実施形態による多階層キャッシュメモリの制御方法は、異種のアーキテクチャを有するコアが統合されたようなマルチコアプロセッサ（ヘテロジニアスマルチコア）に対しても、効率的な適用が可能である。ヘテロジニアスマルチコアにおいては、上位キャッシュは特定のコアが占有し、下位キャッシュのみを複数コアが共有する場合がある。
【００９５】
例えば、動画像符号化用プロセッサの場合、画像上で必要な範囲のピクセルデータを広い範囲でＬ２キャッシュに転送しておき、動き探索処理用コアがさらに限定された範囲のピクセルデータを共有Ｌ２キャッシュから占有Ｌ１−１キャッシュに転送し、動き補償用コアが限定された範囲のピクセルデータを共有Ｌ２キャッシュから占有Ｌ１−２キャッシュに転送し、特定色判定用コアが限定範囲のピクセルデータを共有Ｌ２キャッシュから占有Ｌ１−３キャッシュに転送する、という場合が考えられる。
【００９６】
このような場合、上位キャッシュは最大でコアの個数だけ存在する。そのため、各キャッシュ階層のバイパスによって実現される構造は、通常のシングルコア等に比べて、さらに多くの場合分けが考えられる。また、それぞれの上位キャッシュはヒット率についても大きなばらつきが存在することがありうる。そのため、本制御方法によりキャッシュ階層を適応的に制御することは、消費電力の大きな削減につながる。
【００９７】
なお、動画像には様々な画像サイズ及びフレームレートがありうるため、動画像処理用プロセッサが必要とする単位時間あたりバンド幅及びレイテンシは、動画によって大きく異なる。本制御方法を、例えば、動画像処理用プロセッサに適用する場合、入力される各動画像に応じて、プロセッサが必要とする性能を実現するための最小限のキャッシュ階層を有効化する。そして、その他のキャッシュ階層を無効化及びバイパスすることによって、本制御方法は、動画像処理性能を維持しつつ消費電力を抑制することができる。
【００９８】
上述した実施形態における多階層キャッシュメモリ制御部３００の一部又は全部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【００９９】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１００】
１００…マイクロプロセッサ、１０１…コア、１０２…Ｌ１キャッシュ、１０３…Ｌ２キャッシュ、１０４…Ｌ３キャッシュ、１０５…Ｌ４キャッシュ、１０６…メインメモリ、１０７…第０バスセレクタ、１０８…第１バスセレクタ、１０９…第２バスセレクタ、１１０…第３バスセレクタ、１１１〜１２９…バス、１３０…バイパス制御部、１３１…電力制御部、３００…多階層キャッシュメモリ制御部、３０１…ヒット・カウンタ、３０２…命令数カウンタ、３０３…ミスペナルティテーブル、３０４…ＨＰＫＩ導出部、３０５…ＨＬＰＫＩ導出部、３０９…キャッシュメモリ部、３１２…データアレイ、３１３…電力制御スイッチ
【図１】
2020030696.tif 000003
【図２】
2020030696.tif 000004
【図３】
2020030696.tif 000005
【図４】
2020030696.tif 000006
【図５】
2020030696.tif 000007
【図６】
2020030696.tif 000008
【図７】
2020030696.tif 000009