(57)【要約】【課題】性能の劣化を抑制するとともに、消費電力の増加を抑制することができるキャッシュメモリ装置を提供する。【解決手段】複数のプログラムを切り替えながら実行するプロセッサ部２００に接続されるキャッシュメモリ装置１００であって、タグ格納部及びデータ格納部を含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリ１１０と、複数のウェイのうちのヒットするウェイを予測するウェイ予測部１２０と、クロック制御部１１３とを備え、クロック制御部１１３は、第１メモリアクセス命令がプロセッサ部２００で解読された場合に、ウェイ予測部１２０によって予測されたウェイのデータ格納部のみにクロックを供給し、第２メモリアクセス命令がプロセッサ部２００で解読された場合に、ウェイ予測部１２０による予測結果に関わらず、予め定められたデータ格納部にクロックを供給する。【選択図】図１
2011257800.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリ装置であって、
前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリと、
前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちのヒットするウェイを予測するウェイ予測部と、
前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御部とを備え、
前記クロック制御部は、
第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、
前記第１メモリアクセス命令とは異なる第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する
キャッシュメモリ装置。
【請求項２】
前記第１メモリアクセス命令は、前記複数のプログラムの間において排他の変数をメモリに読み書きする命令であり、
前記第２メモリアクセス命令は、前記複数のプログラムの間において共有の変数をメモリに読み書きする命令である
請求項１記載のキャッシュメモリ装置。
【請求項３】
前記第１メモリアクセス命令は、局所変数宣言された変数をメモリに読み書きする命令であり、
前記第２メモリアクセス命令は、共有変数宣言された変数をメモリに読み書きする命令である
請求項１記載のキャッシュメモリ装置。
【請求項４】
前記第２メモリアクセス命令は、ウェイの予測結果を利用しないことを示す属性ビットを含む
請求項１記載のキャッシュメモリ装置。
【請求項５】
前記クロック制御部は、さらに、
前記第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のタグ格納部のうち、前記ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、
前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給する
請求項１〜４のいずれか１項に記載のキャッシュメモリ装置。
【請求項６】
前記クロック制御部は、
前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる全てのデータ格納部にクロックを供給する
請求項１〜５のいずれか１項に記載のキャッシュメモリ装置。
【請求項７】
前記複数のウェイは、前記複数のプログラムに割り当てられ、
前記クロック制御部は、前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記第２メモリアクセス命令を含むプログラムに割り当てられたウェイに含まれるデータ格納部にクロックを供給する
請求項１〜５のいずれか１項に記載のキャッシュメモリ装置。
【請求項８】
前記ウェイ予測部は、
ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、
前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、
前記履歴情報を更新する更新部とを備え、
前記更新部は、
前記第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第１メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、
前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記履歴情報を更新しない
請求項１〜７のいずれか１項に記載のキャッシュメモリ装置。
【請求項９】
前記ウェイ予測部は、
ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、
前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、
前記履歴情報を更新する更新部とを備え、
前記更新部は、
前記第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第１メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、
前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第２メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新する
請求項１〜７のいずれか１項に記載のキャッシュメモリ装置。
【請求項１０】
ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換装置であって、
入力されたプログラムからメモリアクセス命令を抽出する抽出部と、
前記抽出部によって抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定部と、
前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換部とを備える
プログラム変換装置。
【請求項１１】
前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、複数のプログラムの間において共有の変数である場合に、当該変数をグローバル変数であると判定する
請求項１０記載のプログラム変換装置。
【請求項１２】
前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、共有変数宣言された変数である場合に、当該変数をグローバル変数であると判定する
請求項１０記載のプログラム変換装置。
【請求項１３】
前記変換部は、前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果を利用しないことを示す属性ビットを含む前記予測無視メモリアクセス命令に変換する
請求項１０記載のプログラム変換装置。
【請求項１４】
複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記キャッシュメモリは、
前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリであり、
前記キャッシュメモリ制御方法は、
前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちヒットするウェイを予測するウェイ予測ステップと、
前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御ステップとを含み、
前記クロック制御ステップでは、
第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測ステップにおいて予測されたウェイのデータ格納部のみにクロックを供給し、
前記第１メモリアクセス命令とは異なる第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測ステップにおける予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する
キャッシュメモリ制御方法。
【請求項１５】
ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換方法であって、
入力されたプログラムからメモリアクセス命令を抽出する抽出ステップと、
前記抽出ステップにおいて抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定ステップと、
前記判定ステップにおいてグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換ステップとを含む
プログラム変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セットアソシアティブ方式のキャッシュメモリ装置に関し、特に、ヒットするウェイの予測を行うキャッシュメモリ装置に関する。
【背景技術】
【０００２】
近年、プロセッサからメインメモリへのメモリアクセスを高速化させるために、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などからなる小容量で高速で動作可能なキャッシュメモリが利用されている。例えば、キャッシュメモリを、プロセッサの内部又はその近傍に配置し、メインメモリに保持されたデータの一部をキャッシュメモリに記憶させておくことで、メモリアクセスを高速化させることができる。
【０００３】
例えば、特許文献１には、セットアソシアティブ方式のキャッシュメモリについて開示されている。
【０００４】
特許文献１に記載された従来のメモリ装置は、ウェイがヒットしたかを示すウェイ判定信号を出力するウェイ判定器と、ウェイ判定信号の予測値を発生するウェイ予測部とを備える。そして、従来のメモリ装置は、ウェイ予測部からの予測値に基づき予測されたウェイのデータ格納部だけを活性化する。なお、活性化とは、クロックを供給することである。
【０００５】
また、従来のメモリ装置は、ウェイ判定器からのウェイ判定信号と予測値とを比較し、不一致の場合にウェイ予測判定信号を出力するウェイ予測判定部を備える。そして、従来のメモリ装置は、ウェイ予測判定部からのウェイ予測判定信号に基づきウェイ予測部の予測値を、ヒットしたウェイを示すウェイ判定信号に変更する。
【０００６】
上記構成により、従来のメモリ装置は、消費電力を低減させ、かつ、データ読み出し時のタイムラグを低減させることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−３３４４２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来技術では、予測が外れた場合に、予測ミスによるオーバーヘッドを回避する手段がなく、キャッシュメモリの性能が劣化するという課題がある。
【０００９】
具体的には、特許文献１に記載のメモリ装置では、予測が外れた場合には、ヒットしたウェイを示すウェイ判定信号に予測値を変更する処理が必要であり、処理のサイクル数が増加してしまう。つまり、レイテンシーが大きくなることでキャッシュメモリの性能が劣化してしまう。
【００１０】
特に、マルチスレッド処理のように、サイクル毎にスレッドを切り替え、又は、１サイクルに複数のスレッドを処理する場合には、予測が外れる場合が大きく、性能の劣化を無視することができない。これに対して、予測が外れる可能性を低くするために、予測の範囲を大きくすることが考えられるが、これでは消費電力の増加を抑制することができない。
【００１１】
そこで、本発明は、性能の劣化を抑制するとともに、消費電力の増加を抑制することができるキャッシュメモリ装置及びキャッシュメモリ制御方法を提供することを目的とする。また、本発明は、本発明に係るキャッシュメモリ装置に対応するメモリアクセス命令を生成することができるプログラム変換装置及びプログラム変換方法を提供することも目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明の一態様に係るキャッシュメモリ装置は、複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリ装置であって、前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリと、前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちのヒットするウェイを予測するウェイ予測部と、前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御部とを備え、前記クロック制御部は、第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、前記第１メモリアクセス命令とは異なる第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する。
【００１３】
これにより、第２メモリアクセス命令が解読された場合は、ウェイの予測結果を利用せずに、予め定められたウェイのデータ格納部にクロックを供給するので、例えば、予測が外れやすい場合には、予測結果を無視することができるので、予測が外れたことによる処理の繰り返しを抑制することができる。したがって、キャッシュメモリ装置の性能の劣化を抑制することができるとともに、処理の繰り返しによる消費電力の増加も抑制することができる。
【００１４】
また、第１メモリアクセス命令が解読された場合は、ウェイの予測結果を利用し、予測されたウェイのデータ格納部のみにクロックを供給するので、消費電力の増加を抑制することができる。
【００１５】
また、前記第１メモリアクセス命令は、前記複数のプログラムの間において排他の変数をメモリに読み書きする命令であり、前記第２メモリアクセス命令は、前記複数のプログラムの間において共有の変数をメモリに読み書きする命令であってもよい。
【００１６】
これにより、共有の変数は、他のプログラム（又は、スレッド）からも参照される可能性があるため、共有の変数をメモリに読み書きする第２メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。これに対して、排他の変数は、他のプログラムからは参照されないため、排他の変数をメモリに読み書きする第１メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が低い。したがって、予測が外れる可能性が高い場合には、予測結果を無視し、予測が外れる可能性が低い場合には、予測を利用するので、性能の劣化及び消費電力の増加を抑制することができる。
【００１７】
また、前記第１メモリアクセス命令は、局所変数宣言された変数をメモリに読み書きする命令であり、前記第２メモリアクセス命令は、共有変数宣言された変数をメモリに読み書きする命令であってもよい。
【００１８】
これにより、共有変数宣言された変数は、他のプログラム（又は、スレッド）からも参照される可能性があるため、共有変数宣言された変数をメモリに読み書きする第２メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。これに対して、局所変数宣言された変数は、他のプログラムからは参照されないため、局所変数宣言された変数をメモリに読み書きする第１メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が低い。したがって、予測が外れる可能性が高い場合には、予測結果を無視し、予測が外れる可能性が低い場合には、予測を利用するので、性能の劣化及び消費電力の増加を抑制することができる。
【００１９】
また、前記第２メモリアクセス命令は、ウェイの予測結果を利用しないことを示す属性ビットを含んでもよい。
【００２０】
これにより、メモリアクセス命令に含まれるビットを判断するだけで、予測結果を利用するか否かを容易に決定することができる。
【００２１】
また、前記クロック制御部は、さらに、前記第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のタグ格納部のうち、前記ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給してもよい。
【００２２】
これにより、ウェイの予測結果に応じて、タグ格納部にクロックを供給するか否かを判定するので、消費電力をさらに低減することができる。
【００２３】
また、前記クロック制御部は、前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる全てのデータ格納部にクロックを供給してもよい。
【００２４】
これにより、予測が外れる可能性が高い場合には、全てのデータ格納部にクロックを供給するので、タグがヒットした場合に、データがミスヒットすることを防止することができるので、性能の劣化を抑制することができる。
【００２５】
また、前記複数のウェイは、前記複数のプログラムに割り当てられ、前記クロック制御部は、前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記第２メモリアクセス命令を含むプログラムに割り当てられたウェイに含まれるデータ格納部にクロックを供給してもよい。
【００２６】
これにより、予測が外れる可能性が高い場合には、プログラムを実行するために割り当てられた１つ以上のウェイの１つ以上のデータ格納部にクロックを供給するので、タグがヒットした場合に、データがミスヒットする可能性を低減することができる。さらに、全てのデータ格納部にクロックを供給する場合に比べて、消費電力を低減することができる。
【００２７】
また、前記ウェイ予測部は、ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、前記履歴情報を更新する更新部とを備え、前記更新部は、前記第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第１メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記履歴情報を更新しなくてもよい。
【００２８】
これにより、予測が外れる可能性が高い場合には、履歴情報の更新を行わないので、予測のアルゴリズムを壊すことがなく、以降に実行されるメモリアクセス命令に対して適切な予測を行うことができる。
【００２９】
また、前記ウェイ予測部は、ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、前記履歴情報を更新する更新部とを備え、前記更新部は、前記第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第１メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、前記第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第２メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新してもよい。
【００３０】
これにより、複数のプログラムのうち単一のプログラムのみが一定期間実行されてヒットするウェイの履歴が単一のプログラムにより決定される場合に、予測の当たる確率を向上させることができる。
【００３１】
また、本発明の一態様に係るプログラム変換装置は、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換装置であって、入力されたプログラムからメモリアクセス命令を抽出する抽出部と、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定部と、前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換部とを備える。
【００３２】
これにより、上記のキャッシュメモリ装置のような、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成することができる。グローバル変数は、他のプログラム（又は、スレッド）からも参照される可能性があるため、グローバル変数をメモリに読み書きするメモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。このため、グローバル変数をメモリに読み書きするメモリアクセス命令を予測無視メモリアクセス命令に変換することで、キャッシュメモリにおいて、予測結果を無視させることができる。したがって、キャッシュメモリの性能の劣化及び消費電力の増加を抑制することができる。
【００３３】
また、前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、複数のプログラムの間において共有の変数である場合に、当該変数をグローバル変数であると判定してもよい。
【００３４】
これにより、共有の変数は、他のプログラム（又は、スレッド）からも参照される可能性があるため、共有の変数をメモリに読み書きするメモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。したがって、予測が外れる可能性が高い場合には、予測結果を無視させるので、性能の劣化及び消費電力の増加を抑制することができる。
【００３５】
また、前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、共有変数宣言された変数である場合に、当該変数をグローバル変数であると判定してもよい。
【００３６】
これにより、共有変数宣言された変数は、他のプログラム（又は、スレッド）からも参照される可能性があるため、共有変数宣言された変数をメモリに読み書きするメモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。したがって、予測が外れる可能性が高い場合には、予測結果を無視させるので、性能の劣化及び消費電力の増加を抑制することができる。
【００３７】
また、前記変換部は、前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果を利用しないことを示す属性ビットを含む前記予測無視メモリアクセス命令に変換してもよい。
【００３８】
これにより、メモリアクセス命令にビットを追加するだけで、予測無視メモリアクセス命令を生成することができる。
【００３９】
また、本発明の一態様に係るキャッシュメモリ制御方法は、複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリを制御するキャッシュメモリ制御方法であって、前記キャッシュメモリは、前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリであり、前記キャッシュメモリ制御方法は、前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちヒットするウェイを予測するウェイ予測ステップと、前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御ステップとを含み、前記クロック制御ステップでは、第１メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測ステップにおいて予測されたウェイのデータ格納部のみにクロックを供給し、前記第１メモリアクセス命令とは異なる第２メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測ステップにおける予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する。
【００４０】
これにより、第２メモリアクセス命令が解読された場合は、ウェイの予測結果を利用せずに、予め定められたウェイのデータ格納部にクロックを供給するので、例えば、予測が外れやすい場合には、予測結果を無視することができるので、予測が外れたことによる処理の繰り返しを抑制することができる。したがって、キャッシュメモリの性能の劣化を抑制することができるとともに、処理の繰り返しによる消費電力の増加も抑制することができる。
【００４１】
また、第１メモリアクセス命令が解読された場合は、ウェイの予測結果を利用し、予測されたウェイのデータ格納部のみにクロックを供給するので、消費電力の増加を抑制することができる。
【００４２】
また、本発明の一態様に係るプログラム変換方法は、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換方法であって、入力されたプログラムからメモリアクセス命令を抽出する抽出ステップと、前記抽出ステップにおいて抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定ステップと、前記判定ステップにおいてグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換ステップとを含む。
【００４３】
これにより、上記のキャッシュメモリ装置のように、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成することができる。
【発明の効果】
【００４４】
本発明によれば、性能の劣化を抑制するとともに、消費電力の増加を抑制することができる。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施の形態１に係るキャッシュメモリシステムの構成の一例を示すブロック図である。
【図２】本発明の実施の形態１に係るメモリアクセス命令の一例を示す図である。
【図３】本発明の実施の形態１に係る命令と予測ウェイとアクセスウェイとの関係の一例を示す図である。
【図４】本発明の実施の形態１に係るウェイ予測部の構成の一例を示すブロック図である。
【図５】本発明の実施の形態１に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【図６】本発明の実施の形態１に係るキャッシュメモリの制御方法の一例を示すフローチャートである。
【図７】本発明の実施の形態１に係るメモリアクセス命令の一例を示す図である。
【図８】本発明の実施の形態１に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【図９】本発明の実施の形態１に係るプログラム変換装置の構成の一例を示すブロック図である。
【図１０】本発明の実施の形態１に係るプログラム変換装置の動作の一例を示すフローチャートである。
【図１１】本発明の実施の形態１の変形例に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【図１２】本発明の実施の形態２に係るキャッシュメモリ装置の構成の一例を示すブロック図である。
【図１３】本発明の実施の形態２に係るメモリアクセス命令の一例を示す図である。
【図１４】本発明の実施の形態２に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【図１５】本発明の実施の形態の変形例に係るスレッドとウェイトの対応関係の一例を示す図である。
【図１６】本発明の実施の形態の変形例に係るキャッシュメモリ装置の構成の一例を示す図である。
【図１７】本発明の実施の形態の変形例に係るメモリアクセス命令の一例を示す図である。
【発明を実施するための形態】
【００４６】
以下では、本発明のキャッシュメモリ装置及びプログラム変換装置について、実施の形態に基づいて、図面を用いて詳細に説明する。
【００４７】
（実施の形態１）
本発明の実施の形態１に係るキャッシュメモリ装置は、複数のプログラムを切り替えながら実行するプロセッサに接続されるキャッシュメモリ装置である。実施の形態１に係るキャッシュメモリ装置は、タグ格納部及びデータ格納部を含む複数のウェイを備えるキャッシュメモリと、プロセッサでメモリアクセス命令が実行されるときに、複数のウェイのうちのヒットするウェイを予測するウェイ予測部とを備える。さらに、実施の形態１に係るキャッシュメモリ装置は、クロック制御部を備え、クロック制御部は、第１メモリアクセス命令が解読された場合に、ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、第２メモリアクセス命令が解読された場合に、予め定められたデータ格納部にクロックを供給することを特徴とする。
【００４８】
言い換えると、本発明の実施の形態１に係るキャッシュメモリ装置は、予測が外れる可能性が高い第２メモリアクセス命令がプロセッサ部で解読された場合には、ウェイ予測部による予測結果を無視して、予め定められたデータ格納部にクロックを供給する。また、本発明の実施の形態１に係るキャッシュメモリ装置は、予測が外れる可能性が低い第１メモリアクセス命令がプロセッサ部で解読された場合には、ウェイ予測部による予測結果に従って、予測されたウェイのデータ格納部にクロックを供給する。
【００４９】
図１は、本発明の実施の形態１に係るキャッシュメモリシステム１０の構成の一例を示すブロック図である。
【００５０】
図１に示すように、本発明の実施の形態１に係るキャッシュメモリシステム１０は、キャッシュメモリ装置１００と、プロセッサ部２００とを備える。
【００５１】
キャッシュメモリ装置１００は、プロセッサ部２００及びメインメモリ（図示せず）に接続されている。キャッシュメモリ装置１００は、プロセッサ部２００によってメモリアクセス命令が実行された場合に、ヒットかミスヒットかを判定する。具体的には、キャッシュメモリ装置１００は、メモリアクセス命令が示すアドレスに対応するエントリがキャッシュメモリに存在する（ヒット）か否か（ミスヒット）を判定する。
【００５２】
例えば、メモリアクセス命令がリード命令である場合、キャッシュメモリ装置１００は、リード命令が示すリードアドレスに対応するエントリがあり、かつ、当該エントリに格納されたデータが有効である場合に、ヒットと判定し、そうでない場合に、ミスヒットと判定する。また、メモリアクセス命令がライト命令である場合、キャッシュメモリ装置１００は、ライト命令が示すライトアドレスに対応するエントリがある場合に、ヒットと判定し、そうでない場合に、ミスヒットと判定する。
【００５３】
リード命令が実行された場合において、ミスヒットと判定された場合は、キャッシュメモリ装置１００は、キャッシュメモリにエントリを作成し、メインメモリから該当するデータを読み出す。そして、キャッシュメモリ装置１００は、読み出したデータを、作成したエントリに書き込むとともに、プロセッサ部２００に出力する。
【００５４】
また、ライト命令が実行された場合において、ミスヒットと判定された場合は、キャッシュメモリ装置１００は、キャッシュメモリにエントリを作成し、作成したエントリにデータを書き込む。そして、キャッシュメモリ装置１００は、所定のタイミングで、メインメモリに、エントリに書き込んだデータを書き込む。
【００５５】
図１に示すように、キャッシュメモリ装置１００は、キャッシュメモリ１１０と、ウェイ予測部１２０と、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）１３０とを備える。
【００５６】
キャッシュメモリ１１０は、ｎ（ｎは２以上の整数）個のウェイを有するセットアソシアティブ方式のキャッシュメモリであり、プロセッサ部２００に接続されている。具体的には、キャッシュメモリ１１０は、プロセッサ部２００が備えるプロセッサ２１０と接続され、メモリアクセス命令が実行された場合に、当該メモリアクセス命令に含まれるアドレス１５１が入力される。本発明の実施の形態１では、一例として、キャッシュメモリ１１０は、２個のウェイを有する。
【００５７】
また、キャッシュメモリ１１０には、ライト命令が実行された場合に、書き込みデータ１５２が入力される。さらに、キャッシュメモリ１１０は、リード命令が実行された場合に、読み出しデータ１５３をプロセッサ２１０へ出力する。
【００５８】
図１に示すように、キャッシュメモリ１１０は、タグ格納部群１１１と、データ格納部群１１２と、クロック制御部１１３と、ヒット判定部１１４と、セレクタ１１５とを備える。
【００５９】
なお、以下の説明では、一例として、キャッシュメモリ１１０は、物理アドレスを格納する場合について説明する。アドレス１５１は、論理アドレス（仮想アドレス）であって、ＴＬＢ１３０によって物理アドレスに変換される。そして、変換された物理アドレスが、アドレス１５１として、キャッシュメモリ１１０に入力されるものとする（この処理を示す経路については図１に示していない）。なお、キャッシュメモリ１１０は、仮想アドレスを格納してもよい。
【００６０】
タグ格納部群１１１は、ｎ個のタグ格納部、すなわち、ウェイの数と同数のタグ格納部を有し、ｎ個のタグ格納部のそれぞれに、複数のタグアドレスを格納することができる。１つのタグ格納部は、複数の（例えば、１６個）エントリを含み、各エントリに１つのタグアドレスを格納することができる。タグアドレスは、例えば、２１ビットであり、データの書き込み先、又は、データの読み出し先を示すアドレスである。本実施の形態では、ウェイは２個であるので、タグ格納部群１１１は、２個のタグ格納部１１１ａ及び１１１ｂを有する。
【００６１】
タグ格納部１１１ａ及び１１１ｂには、アドレス１５１が入力される。アドレス１５１は、例えば、タグアドレス、セットインデックス及びワードインデックスを含んでいる。タグ格納部１１１ａ及び１１１ｂは、アドレス１５１に含まれるセットインデックスに対応するエントリに格納されたタグアドレスを、タグデータ１６０ａ及び１６０ｂとして出力する。
【００６２】
データ格納部群１１２は、ｎ個のデータ格納部、すなわち、ウェイの数と同数のデータ格納部を有し、ｎ個のデータ格納部のそれぞれに、複数のデータを格納することができる。１つのデータ格納部は、複数の（例えば、１６個）エントリ、すなわち、１つのタグ格納部が有するエントリの個数と同数のエントリを含み、各エントリに１つのデータを格納することができる。１つのデータのサイズは、例えば、６４又は１２８バイトである。本実施の形態では、ウェイは２個であるので、データ格納部群１１２は、２個のデータ格納部１１２ａ及び１１２ｂを有する。
【００６３】
データ格納部１１２ａ及び１１２ｂには、アドレス１５１が入力される。データ格納部１１２ａ及び１１２ｂは、アドレス１５１に含まれるセットインデックスに対応するデータを、データ格納部読み出しデータ１６１ａ及び１６１ｂとして出力する。
【００６４】
なお、タグ格納部１１１ａとデータ格納部１１２ａとは第１ウェイに含まれる。１つのウェイには、複数の（例えば、１６個）エントリ（キャッシュライン）が含まれる。複数のエントリのそれぞれが、タグ格納部１１１ａの１つのタグアドレスとデータ格納部１１２ａの１つのデータとを含んでいる。つまり、タグ格納部１１１ａに格納されるタグアドレスと、データ格納部１１２ａに格納されるデータとは、互いに対応付けられている。
【００６５】
同様に、タグ格納部１１１ｂとデータ格納部１１２ｂとが第２ウェイに含まれる。
【００６６】
また、プロセッサ２１０で実行されたメモリアクセス命令がライト命令である場合は、データ格納部群１１２には、アドレス１５１とともに、書き込みデータ１５２が入力される。そして、データ格納部群１１２は、ヒット判定部１１４から入力されるキャッシュヒット信号１６２とアドレス１５１とに基づいて、書き込みを行うウェイ及びエントリを決定し、決定したエントリに書き込みデータ１５２を書き込む。
【００６７】
クロック制御部１１３は、プロセッサ部２００で解読されたメモリアクセス命令の種別に基づいて、複数のウェイに供給するクロックを制御する。具体的には、クロック制御部１１３は、第１メモリアクセス命令が解読された場合に、複数のウェイに含まれる複数のデータ格納部のうち、ウェイ予測部１２０によって予測されたウェイのデータ格納部のみにクロックを供給する。第１メモリアクセス命令は、例えば、プロセッサ２１０で実行中の複数のプログラムの間において排他の変数をメモリに読み書きする命令である。
【００６８】
また、クロック制御部１１３は、第２メモリアクセス命令が解読された場合に、ウェイ予測部１２０による予測結果に関わらず、複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する。より具体的には、クロック制御部１１３は、予め定められたデータ格納部として、全てのデータ格納部にクロックを供給する。
【００６９】
また、第２メモリアクセス命令は、第１メモリアクセス命令とは異なるタイプの命令である。例えば、第２メモリアクセス命令は、プロセッサ２１０で実行中の複数のプログラムの間において共有の変数をメモリに読み書きする命令である。
【００７０】
図１に示すように、クロック制御部１１３は、ｎ個のクロック制御信号生成部、すなわち、ウェイの数と同数のクロック制御信号生成部を有する。本実施の形態では、ウェイが２個であるので、クロック制御部１１３は、２個のクロック制御信号生成部１１３ａ及び１１３ｂを有する。
【００７１】
クロック制御信号生成部１１３ａ及び１１３ｂは、例えば、ＯＲ回路によって構成される。具体的には、図１に示すように、クロック制御信号生成部１１３ａには、共有アクセス信号１５６とウェイ予測部１２０から出力されるウェイ予測信号１５８ａとが入力される。クロック制御信号生成部１１３ａは、共有アクセス信号１５６とウェイ予測信号１５８ａとの少なくとも１つがＨｉｇｈレベルであれば、クロック制御信号１５９ａを出力する。
【００７２】
ウェイ予測信号１５８ａは、第１ウェイがヒットするウェイであると予測されたか否かを示す信号である。ウェイ予測部１２０によって第１ウェイがヒットするウェイであると予測された場合に、ウェイ予測信号１５８ａはＨｉｇｈレベルとなり、そうでない場合に、ウェイ予測信号１５８ａはＬｏｗレベルとなる。
【００７３】
また、共有アクセス信号１５６は、プロセッサ部２００から出力される信号であって、プロセッサ部２００で第２メモリアクセス命令が解読された場合に、Ｈｉｇｈレベルとなる信号である。クロック制御信号１５９ａは、第１ウェイに含まれるデータ格納部１１２ａにクロックを供給するための信号である。
【００７４】
また、クロック制御信号生成部１１３ｂには、共有アクセス信号１５６とウェイ予測部１２０から出力されるウェイ予測信号１５８ｂとが入力される。クロック制御信号生成部１１３ｂは、共有アクセス信号１５６とウェイ予測信号１５８ｂとの少なくとも１つがＨｉｇｈレベルであれば、クロック制御信号１５９ｂを出力する。
【００７５】
ウェイ予測信号１５８ｂは、第２ウェイがヒットするウェイであると予測されたか否かを示す信号である。ウェイ予測部１２０によって第２ウェイがヒットするウェイであると予測された場合に、ウェイ予測信号１５８ｂはＨｉｇｈレベルとなり、そうでない場合に、ウェイ予測信号１５８ｂはＬｏｗレベルとなる。クロック制御信号１５９ｂは、第２ウェイに含まれるデータ格納部１１２ｂにクロックを供給するための信号である。
【００７６】
図１に示すように、共有アクセス信号１５６は、クロック制御部１１３が備える全てのクロック制御信号生成部に入力される。したがって、全てのクロック制御信号生成部はそれぞれ、クロック制御信号を出力するので、データ格納部群１１２が備える全てのデータ格納部にクロックが供給される。
【００７７】
つまり、共有アクセス信号１５６がキャッシュメモリ装置１００に入力された場合は、ウェイ予測部１２０の予測結果に関わらず、予め定められたウェイ、本実施の形態の例では、全てのウェイに含まれる全てのデータ格納部にクロックが供給される。つまり、予測結果が無視される。
【００７８】
ヒット判定部１１４は、ＴＬＢ１３０から出力される物理ページ番号１６３と、タグデータ１６０ａ及び１６０ｂとを用いて、ヒットかミスヒットかを判定する。具体的には、ヒット判定部１１４は、物理ページ番号１６３に対応するタグアドレスを、タグデータ１６０ａ及び１６０ｂのいずれかが示す場合を、ヒットと判定する。ヒットの場合は、ヒット判定部１１４は、ヒットであること、及び、ヒットしたウェイを示すキャッシュヒット信号１６２をセレクタ１１５及びウェイ予測部１２０へ出力する。
【００７９】
また、アドレス１５１が、ライト命令が示すアドレスである場合において、ヒットの場合は、キャッシュヒット信号１６２をデータ格納部群１１２へ出力する。
【００８０】
セレクタ１１５は、キャッシュヒット信号１６２に基づいて、データ格納部読み出しデータ１６１ａ及び１６１ｂを選択し、選択したデータを読み出しデータ１５３としてプロセッサ２１０へ出力する。
【００８１】
ウェイ予測部１２０は、プロセッサ２１０でメモリアクセス命令が実行されるときに、複数のウェイのうちのヒットするウェイを予測する。例えば、ウェイ予測部１２０は、過去にヒットしたウェイの履歴に基づいて、ヒットするウェイを予測する。
【００８２】
そして、ウェイ予測部１２０は、予測したウェイのデータ格納部のみにクロックを供給するように、クロック制御部１１３を制御する。例えば、ウェイ予測部１２０は、第１ウェイがヒットするウェイであると予測した場合には、Ｈｉｇｈレベルとなるウェイ予測信号１５８ａを出力する。また、ウェイ予測部１２０は、第２ウェイがヒットするウェイであると予測した場合には、Ｈｉｇｈレベルとなるウェイ予測信号１５８ｂを出力する。
【００８３】
なお、ウェイ予測部１２０は、プロセッサ部２００から排他アクセス信号１５７が入力された場合にのみウェイの予測を行い、共有アクセス信号１５６が入力された場合には、ウェイの予測を行わなくてもよい。排他アクセス信号１５７は、プロセッサ部２００から出力される信号であって、プロセッサ部２００で第１メモリアクセス命令が解読された場合に、Ｈｉｇｈレベルとなる信号である。
【００８４】
ＴＬＢ１３０は、プロセッサ２１０からアドレス１５１が入力される。アドレス１５１は、論理アドレス（仮想アドレス）であり、ＴＬＢ１３０は、高速に論理アドレスを物理アドレスに変換するために用いられるキャッシュメモリである。ＴＬＢ１３０は、アドレス１５１が入力された場合において、ヒットである場合には、物理ページ番号１６３を出力する。
【００８５】
なお、本実施の形態では、キャッシュメモリ装置１００がＴＬＢ１３０を備える構成について説明したが、プロセッサ部２００がＴＬＢ１３０を備えてもよい。また、キャッシュメモリ装置１００及びプロセッサ部２００とは別に、ＴＬＢ１３０を設けてもよい。
【００８６】
以上のように、本発明の実施の形態１に係るキャッシュメモリ装置１００は、プロセッサ部２００から排他アクセス信号１５７が入力された場合は、ウェイ予測部１２０によって予測されたウェイのデータ格納部のみにクロックを供給する。また、キャッシュメモリ装置１００は、プロセッサ部２００から共有アクセス信号１５６が入力された場合は、ウェイ予測部１２０による予測結果を無視して、全てのデータ格納部にクロックを供給する。
【００８７】
このように、本発明の実施の形態１に係るキャッシュメモリ装置１００は、プロセッサ部２００から入力される信号に基づいて、クロックを供給するデータ格納部を制御する。したがって、予測が当たる可能性が高い場合には、予測されたウェイのデータ格納部だけにクロックを供給することができるので、消費電力の増加を抑制することができる。また、予測が当たる可能性が低い場合には、全てのデータ格納部にクロックを供給することで、予測が外れた場合に、処理が繰り返されるのを防ぐことができるので、レイテンシーの低下を抑制することができ、性能の劣化を抑制することができる。
【００８８】
続いて、図１に示すプロセッサ部２００について説明する。
【００８９】
プロセッサ部２００は、キャッシュメモリ装置１００及びメインメモリ（図示せず）に接続され、プログラムを実行することで、キャッシュメモリ装置１００及びメインメモリにデータを読み書きする。図１に示すように、プロセッサ部２００は、プロセッサ２１０と、命令解読部２２０と、命令キャッシュメモリ２３０とを備える。
【００９０】
プロセッサ２１０は、複数のプログラムを切り替えながら実行する。つまり、プロセッサ２１０は、マルチタスク処理及びマルチスレッド処理を実行する。したがって、プロセッサ２１０が実行するメモリアクセス命令は、例えば、以下の２つのタイプのメモリアクセス命令に分類される。第１タイプのメモリアクセス命令である第１メモリアクセス命令は、複数のプログラムの間において排他の変数をメモリに読み書きする命令である。また、第２タイプのメモリアクセス命令である第２メモリアクセス命令は、複数のプログラムの間において共有の変数をメモリに読み書きする命令である。
【００９１】
命令解読部２２０は、命令キャッシュメモリ２３０から命令コード１５４を読み出し、読み出した命令コード１５４を解読することで、命令デコード信号１５５を生成して、プロセッサ２１０に出力する。
【００９２】
命令解読部２２０は、複数のプログラムを解読することで、メモリアクセス命令が第１メモリアクセス命令であるか第２メモリアクセス命令であるかを判定する。また、命令解読部２２０は、判定結果に応じた信号を、キャッシュメモリ装置１００に出力する。具体的には、命令解読部２２０は、第１メモリアクセス命令の場合、排他アクセス信号１５７を出力し、第２メモリアクセス命令の場合、共有アクセス信号１５６を出力する。
【００９３】
なお、第１メモリアクセス命令は、局所変数宣言された変数、具体的には、ローカル変数をメモリに読み書きする命令であり、第２メモリアクセス命令は、共有変数宣言された変数、具体的には、グローバル変数をメモリに読み書きする命令であってもよい。
【００９４】
第１メモリアクセス命令は、キャッシュメモリ装置１００においてウェイの予測が外れる可能性が低い命令であり、第２メモリアクセス命令は、キャッシュメモリ装置１００においてウェイの予測が外れる可能性が高い命令である。例えば、複数のプログラム間で共有の変数、及び、共有変数宣言された変数は、他のプログラムを実行した場合にもアクセスされる変数である。
【００９５】
１つのプログラムを実行した場合に使用されるデータは、同一のウェイに格納されることが多いが、共有の変数及び共有変数宣言された変数は、他のプログラムでも実行される。このため、これらの変数は、処理対象のプログラムを実行するために割り当てられたウェイとは、異なるウェイに格納されている場合が生じる。ウェイの予測は上述したように、過去の履歴に基づいて実行されるので、途中での他のプログラムによるアクセスが割り込むと、予測が外れやすい。したがって、第２メモリアクセス命令は、ウェイの予測が外れる可能性が高いメモリアクセス命令である。
【００９６】
命令キャッシュメモリ２３０は、プロセッサ２１０が実行する命令を格納するためのキャッシュメモリである。命令キャッシュメモリ２３０は、命令解読部２２０によって解読された命令を格納する。
【００９７】
以上のように、本発明の実施の形態１に係るプロセッサ部２００は、メモリアクセス命令のタイプに応じて、キャッシュメモリ装置１００のウェイ予測機能の制御を行う。具体的には、プロセッサ部２００は、第１メモリアクセス命令を実行した場合は、排他アクセス信号１５７を出力して、キャッシュメモリ装置１００に、ウェイ予測の結果を利用させる。また、プロセッサ部２００は、第２メモリアクセス命令を実行した場合は、共有アクセス信号１５６を出力して、キャッシュメモリ装置１００に、ウェイ予測の結果を無視させる。
【００９８】
このようにして、本発明の実施の形態１に係るキャッシュメモリシステム１０によれば、予測が当たる可能性が高い場合には、予測されたウェイのデータ格納部だけにクロックを供給することができるので、消費電力の増加を抑制することができる。また、予測が当たる可能性が低い場合には、全てのデータ格納部にクロックを供給することで、予測が外れた場合に、処理が繰り返されるのを防ぐことができるので、レイテンシーの低下を抑制することができ、性能の劣化を抑制することができる。
【００９９】
続いて、本発明の実施の形態１に係るキャッシュメモリ装置１００の具体的な動作について説明する。まず、メモリアクセス命令の具体例について、図２を用いて説明する。図２は、本発明の実施の形態１に係るメモリアクセス命令の一例を示す図である。メモリアクセス命令が、メモリからデータを読み出すためのロード命令である場合について説明する。
【０１００】
“ｌｏａｄ  ｒｍ，（ｒｎ）”は、第１メモリアクセス命令の一例であり、ロード命令であって、複数のプログラム間で排他の領域へのアクセスを意味する命令である。図１に示す命令解読部２２０は、解読したメモリアクセス命令が“ｌｏａｄ  ｒｍ，（ｒｎ）”である場合は、排他アクセス信号１５７を出力する。なお、“ｌｏａｄ  ｒｍ，（ｒｎ）”は、従来から使用されている通常のロード命令である。
【０１０１】
“ｌｏａｄｃｍ  ｒｍ，（ｒｎ）”は、第２メモリアクセス命令の一例であり、ロード命令であって、複数のプログラム間で共有の領域へのアクセスを意味する命令である。図１に示す命令解読部２２０は、解読したメモリアクセス命令が“ｌｏａｄｃｍ  ｒｍ，（ｒｎ）”である場合は、共有アクセス信号１５６を出力する。“ｌｏａｄｃｍ  ｒｍ，（ｒｎ）”は、後述する本実施の形態に係るプログラム変換装置によって生成される新たなロード命令である。
【０１０２】
なお、“ｒｍ”は、読み出したデータを格納するレジスタを示す。また、“ｒｎ”は、読み出すデータが格納されているメモリ内の領域を示すアドレスが格納されているレジスタを示す。
【０１０３】
つまり、“ｌｏａｄ  ｒｍ，（ｒｎ）”及び“ｌｏａｄｃｍ  ｒｍ，（ｒｎ）”は、“ｒｎ”が示すレジスタに格納されているアドレスが示す、メモリ内の領域からデータを読み出し、読み出したデータを、“ｒｍ”が示すレジスタに格納することを意味するロード命令である。
【０１０４】
図３は、本発明の実施の形態１に係る命令と予測ウェイとアクセスウェイとの関係の一例を示す図である。
【０１０５】
図３において、予測ウェイは、図１に示すウェイ予測部１２０によるウェイの予測結果を示す。アクセスウェイは、図１に示すクロック制御部１１３がクロックを供給するウェイを示す。
【０１０６】
例えば、時刻ｔ０において、第１メモリアクセス命令である“ｌｏａｄ  ｒ０，（ｒ１）”が命令解読部２２０で解読された場合、命令解読部２２０は、排他アクセス信号１５７をキャッシュメモリ装置１００へ出力する。キャッシュメモリ装置１００では、ウェイ予測部１２０が、過去の履歴などに基づいてヒットするウェイがウェイＡであると予測する。そして、ウェイ予測部１２０は、ウェイＡに対応するウェイ予測信号のみ（例えば、ウェイ予測信号１５８ａのみ）をＨｉｇｈレベルとして出力する。
【０１０７】
クロック制御部１１３は、ウェイ予測部１２０による予測結果に基づいて、ウェイＡに含まれるデータ格納部のみ（例えば、データ格納部１１２ａのみ）にクロックを供給する。具体的には、クロック制御部１１３には、Ｈｉｇｈレベルとなったウェイ予測信号１５８ａのみが入力されるので、クロック制御信号生成部１１３ａのみがクロック制御信号１５９ａをデータ格納部群１１２へ出力する。
【０１０８】
このようにして、図３に示すように、第１メモリアクセス命令がプロセッサ部２００で実行された場合は、予測ウェイとアクセスウェイとが一致する。
【０１０９】
これに対して、例えば、時刻ｔ（ｎ−１）において、第２メモリアクセス命令である“ｌｏａｄ  ｒ１４，（ｒ１５）”が命令解読部２２０で解読された場合、命令解読部２２０は、共有アクセス信号１５６をキャッシュメモリ装置１００へ出力する。このとき、キャッシュメモリ装置１００では、ウェイ予測部１２０は、過去の履歴などに基づいてヒットするウェイがウェイＡであると予測する。そして、ウェイ予測部１２０は、ウェイＡに対応するウェイ予測信号のみ（例えば、ウェイ予測信号１５８ａのみ）をＨｉｇｈレベルとして出力する。
【０１１０】
クロック制御部１１３には、Ｈｉｇｈレベルとなった共有アクセス信号１５６が入力される。したがって、上述したように、クロック制御部１１３は、全てのウェイに含まれる全てのデータ格納部にクロックを供給するように、クロック制御信号を出力する。すなわち、クロック制御部１１３は、ウェイ予測部１２０による予測結果には基づかずに、言い換えると、予測結果を無視して、予め定められたデータ格納部にクロックを供給する。
【０１１１】
これにより、キャッシュメモリ装置１００は、全てのデータ格納部にクロックを供給することで、ウェイの予測が外れた場合であっても、ミスヒットと判定されることなく、読み出しデータ１５３をプロセッサ部２００に出力することができる。また、常に全てのデータ格納部にクロックを供給する場合に比べて、第２メモリアクセス命令のようにウェイの予測が外れる可能性が高い命令が解読された場合のみ、全てのデータ格納部にクロックを供給するので、消費電力の増加を抑制することができる。
【０１１２】
ここで、ウェイ予測部１２０の詳細について、図４を用いて説明する。図４は、本発明の実施の形態１に係るウェイ予測部の構成の一例を示すブロック図である。
【０１１３】
図４に示すように、ウェイ予測部１２０は、履歴保持部１２１と、予測部１２２と、更新部１２３とを備える。
【０１１４】
履歴保持部１２１は、ヒットしたウェイの履歴を示す履歴情報を保持するためのメモリなどである。例えば、履歴保持部１２１は、実行中のプログラム又はスレッド単位で、ヒットしたウェイの履歴を保持する。つまり、履歴保持部１２１は、実行中のプログラム又はスレッドが終了するまで、当該プログラム又はスレッドに含まれるメモリアクセス命令に対応するヒットしたウェイの履歴を保持する。あるいは、履歴情報は、直前にヒットしたウェイだけを示す情報であってもよい。
【０１１５】
予測部１２２は、履歴保持部１２１に保持された履歴情報に基づいて、ヒットするウェイを予測する。例えば、予測部１２２は、直前にヒットしたウェイを、ヒットするウェイと予測してもよい。あるいは、予測部１２２は、所定の予測アルゴリズムに基づいて、ヒットするウェイを予測してもよい。予測の方法は、上記の例には限られない。
【０１１６】
更新部１２３は、履歴保持部１２１に保持された履歴情報を更新する。具体的には、第１メモリアクセス命令がプロセッサ部２００で解読された場合に、当該第１メモリアクセス命令によってヒットしたウェイを示す情報を用いて、履歴情報を更新する。より具体的には、更新部１２３は、ヒット判定部１１４から入力されるキャッシュヒット信号１６２を用いて、履歴情報を更新する。
【０１１７】
また、第２メモリアクセス命令がプロセッサ部２００で解読された場合には、履歴情報を更新しない。つまり、更新部１２３に共有アクセス信号１５６が入力された場合、更新部１２３は、ヒット判定部１１４から入力されるキャッシュヒット信号１６２を無視する。
【０１１８】
以下では、図５を用いて、ウェイ予測部１２０の動作について説明する。図５は、本発明の実施の形態１に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【０１１９】
図５において、アクセスタグウェイは、クロックが供給されるタグ格納部を含むウェイを示す。本発明の実施の形態１では、全てのタグ格納部にクロックが供給されている。
【０１２０】
アクセスデータウェイは、図３に示すアクセスウェイと同様に、クロック制御部１１３がクロックを供給するデータ格納部を含むウェイを示す。ヒットウェイは、メモリアクセス命令が実行された場合にヒットしたウェイを示す。具体的には、ヒットウェイは、キャッシュヒット信号１６２が示すウェイである。
【０１２１】
図５の例では、時刻ｔ（ｎ−１）において、第２メモリアクセス命令である“ｌｏａｄ  ｒ１４，（ｒ１５）”が命令解読部２２０で解読された場合、命令解読部２２０は、共有アクセス信号１５６をキャッシュメモリ装置１００へ出力する。このとき、キャッシュメモリ装置１００では、予測部１２２は、過去の履歴などに基づいてヒットするウェイがウェイＡであると予測する。
【０１２２】
クロック制御部１１３には、Ｈｉｇｈレベルとなった共有アクセス信号１５６が入力される。したがって、上述したように、クロック制御部１１３は、全てのウェイに含まれる全てのデータ格納部にクロックを供給するように、クロック制御信号を出力する。
【０１２３】
そして、ヒット判定部１１４によってウェイＣがヒットしたと判定され、ヒットしたウェイＣを示すキャッシュヒット信号１６２が更新部１２３に入力される。しかしながら、更新部１２３には、共有アクセス信号１５６が入力されているので、ヒットしたウェイＣを示すキャッシュヒット信号１６２を無視して、履歴情報を更新しない。
【０１２４】
したがって、時刻ｔ（ｎ）に示すように、次の第１メモリアクセス命令である“ｌｏａｄ  ｒ１６，（ｒ１７）”が命令解読部２２０で解読された場合、予測部１２２は、ウェイＣを示す情報によって更新されていない履歴情報に基づいて、ヒットするウェイがウェイＡであると判定している。
【０１２５】
なお、更新部１２３は、第２メモリアクセス命令が解読された場合に、予測部１２２によって予測されたウェイと、ヒットしたウェイとが一致していた場合であっても、キャッシュヒット信号１６２を無視する。
【０１２６】
以上のように、本発明の実施の形態１に係るウェイ予測部１２０は、第２メモリアクセス命令が解読された場合には、以降の命令が実行された場合における予測を行う際に、第２メモリアクセス命令に対応する予測結果を利用しない。これにより、蓄積されてきた予測アルゴリズムを壊すことがないので、以降の命令が実行された場合に、正しい予測を行うことができる。
【０１２７】
なお、上記の例では、更新部１２３が履歴情報を更新しない例について説明したが、予測部１２２が、共有アクセス信号１５６を受け取り、ウェイの予測を行わなくてもよい。あるいは、予測部１２２は、共有アクセス信号１５６が入力された以降において、メモリアクセス命令が実行された場合に、第２メモリアクセス命令に対応する予測結果を用いない予測アルゴリズムに基づいて、ウェイの予測を行ってもよい。
【０１２８】
続いて、本発明の実施の形態１に係るキャッシュメモリシステム１０によって実行されるキャッシュメモリ１１０の制御方法について、図６を用いて説明する。図６は、本発明の実施の形態１に係るキャッシュメモリ１１０の制御方法の一例を示すフローチャートである。
【０１２９】
まず、ウェイ予測部１２０は、プロセッサ部２００でメモリアクセス命令が解読されたときに、ヒットするウェイを予測する（Ｓ１１０）。予測結果は、クロック制御部１１３に出力される。
【０１３０】
次に、プロセッサ部２００で解読されたメモリアクセス命令が第１メモリアクセス命令である場合（Ｓ１２０で“第１メモリアクセス命令”）、クロック制御部１１３は、ウェイ予測部１２０によって予測されたウェイのみにクロックを供給する（Ｓ１３０）。具体的には、クロック制御部１１３は、複数のウェイに含まれる複数のデータ格納部のうち、予測されたウェイに含まれるデータ格納部のみにクロックを供給する。
【０１３１】
プロセッサ部２００で解読されたメモリアクセス命令が第２メモリアクセス命令である場合（Ｓ１２０で“第２メモリアクセス命令”）、クロック制御部１１３は、予め定められたウェイにクロックを供給する（Ｓ１４０）。具体的には、クロック制御部１１３は、全てのウェイにクロックを供給する。より具体的には、クロック制御部１１３は、複数のウェイに含まれる全てのデータ格納部にクロックを供給する。
【０１３２】
以上のようにして、本発明の実施の形態１に係るキャッシュメモリ１１０の制御方法によれば、予測が外れる可能性が高い第２メモリアクセス命令が解読された場合には、全てのデータ格納部にクロックを供給する。これにより、予測が外れても処理が繰り返されることを防ぐことができる。すなわち、予測ミスの発生を防止することができるので、性能の劣化を抑制することができる。
【０１３３】
また、予測が外れる可能性が低い第１メモリアクセス命令が解読された場合には、予測結果が示すウェイのデータ格納部のみにクロックを供給する。これにより、常に全てのデータ格納部にクロックを供給する場合に比べて、消費電力を抑制することができる。
【０１３４】
以上のことから、本発明の実施の形態１に係るキャッシュメモリ装置１００及びキャッシュメモリの制御方法によれば、性能の劣化を抑制するとともに、消費電力の増加を抑制することができる。
【０１３５】
続いて、メモリアクセス命令がライト命令（ストア命令）である場合について、説明する。
【０１３６】
図７は、本発明の実施の形態１に係るメモリアクセス命令の一例を示す図である。
【０１３７】
“ｓｔｏｒｅ  （ｒｎ），ｒｍ”は、メモリアクセス命令の一例であり、ライト命令である。“ｒｍ”は、書き込みデータが格納されているレジスタを示す。“（ｒｎ）”は、書き込みデータを書き込むメモリ内の領域を示すアドレスが格納されているレジスタである。つまり、“ｓｔｏｒｅ  （ｒｎ），ｒｍ”は、“ｒｍ”が示すレジスタに格納されているデータを、“ｒｎ”が示すレジスタに格納されているアドレスが示す、メモリ内の領域に書き込むことを意味するライト命令である。
【０１３８】
ライト命令がプロセッサ２１０で実行された場合、キャッシュメモリ装置１００は、ヒットしたウェイ及びエントリが決定されるまで、書き込みデータ１５２をデータ格納部に書き込むことはできない。したがって、ライト命令が実行された場合に、ウェイの予測を行ったとしても、ヒット判定部１１４の結果を待つ必要があるため、ウェイの予測結果を用いる必要はない。よって、図７に示すように、ライト命令は、第１メモリアクセス命令及び第２メモリアクセス命令への分類は行われない。
【０１３９】
図８は、本発明の実施の形態１に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【０１４０】
例えば、時刻ｔ３において、ストア命令である“ｓｔｏｒｅ  （ｒ５），ｒ３”がプロセッサ２１０で実行された場合、ヒット判定部１１４は、ウェイＣがヒットしたウェイであると判定し、ウェイＣを示すキャッシュヒット信号１６２を出力する。そして、データ格納部群１１２には、キャッシュヒット信号１６２に基づいて、ウェイＣに含まれるデータ格納部のみにクロックが供給される。
【０１４１】
このようにして、図８に示すように、ライト命令（ストア命令）がプロセッサ２１０で実行された場合には、ヒットウェイとアクセスデータウェイとが一致する。
【０１４２】
以上のように、ライト命令（ストア命令）が実行された場合は、リード命令の場合に比べて１サイクル分の処理が多く必要となるが、ヒットしたウェイのデータ格納部だけにクロックを供給すればよいので、全てのウェイのデータ格納部にクロックを供給する場合に比べて、消費電力を抑制することができる。
【０１４３】
続いて、本発明の実施の形態１に係るプログラム変換装置について、図９を用いて説明する。図９は、本発明の実施の形態１に係るプログラム変換装置３００の構成の一例を示すブロック図である。
【０１４４】
図９に示すプログラム変換装置３００は、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成する。例えば、プログラム変換装置３００は、コンパイラであり、メモリアクセス命令の種別を判定し、メモリアクセス命令を変換することで、第２メモリアクセス命令を生成する。第２メモリアクセス命令は、ウェイの予測結果をキャッシュメモリに利用させないようにするための予測無視メモリアクセス命令の一例である。
【０１４５】
図９に示すように、プログラム変換装置３００は、抽出部３１０と、判定部３２０と、変換部３３０とを備える。
【０１４６】
抽出部３１０は、入力されたプログラムからメモリアクセス命令を抽出する。プログラムは、例えば、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ、Ｃ言語などの高級言語で記述されている。
【０１４７】
判定部３２０は、抽出部３１０によって抽出されたメモリアクセス命令の種別を判定する。具体的には、判定部３２０は、抽出部３１０によって抽出されたメモリアクセス命令が示す変数がグローバル変数であるか否かを判定する。より具体的には、判定部３２０は、メモリアクセス命令が示す変数がグローバル変数であるかローカル変数であるかを判定する。
【０１４８】
変換部３３０は、判定部３２０によってメモリアクセス命令が示す変数がグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果をキャッシュメモリに利用させないようにするための予測無視メモリアクセス命令に変換する。つまり、予測無視メモリアクセス命令は、グローバル変数をメモリに読み書きすることを示すメモリアクセス命令である。
【０１４９】
具体的には、予測無視メモリアクセス命令は、例えば、複数のプログラムの間において共有の変数をメモリに読み書きすることを示すメモリアクセス命令である。あるいは、予測無視メモリアクセス命令は、共有変数宣言された変数をメモリに読み書きすることを示すメモリアクセス命令である。
【０１５０】
以上のように、本発明の実施の形態１に係るプログラム変換装置３００は、メモリアクセス命令が示す変数がグローバル変数であるか否かを判定し、グローバル変数である場合は、当該メモリアクセス命令を、ウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する。
【０１５１】
グローバル変数は、複数のプログラム及び複数のスレッドにまたがって参照される変数である。このため、グローバル変数を読み書きするためのメモリアクセス命令が解読されたときにキャッシュメモリ装置１００が実行するウェイの予測は、ローカル変数の場合に比べて、外れる可能性が高い。
【０１５２】
したがって、グローバル変数の読み書きを示すメモリアクセス命令が解読された場合には、キャッシュメモリ装置１００によって実行されるウェイの予測結果を無視させることで、キャッシュメモリ装置１００における処理の繰り返しを防止することができる。よって、キャッシュメモリ装置１００におけるレイテンシーの低下、及び、繰り返しによる消費電力の増加を抑制することができる。
【０１５３】
また、グローバル変数でない場合、具体的には、ローカル変数である場合には、キャッシュメモリ装置１００ではウェイの予測結果を利用して、クロックを供給するデータ格納部を制限する。このため、キャッシュメモリ装置１００における消費電力を低減することができる。
【０１５４】
ここで、判定部３２０の動作について、プログラムを記述している高級言語毎に、説明する。
【０１５５】
例えば、Ｐｅｒｌで記述されたプログラムでは、変数は、宣言したブロック（｛｝で示される範囲）内だけで使用される。このように、有効な範囲が決められている変数がローカル変数である。言い換えると、ローカル変数は、参照される範囲が決まっている変数である。
【０１５６】
つまり、Ｐｅｒｌで記述されたプログラムでは、｛｝で囲まれた範囲内に宣言された変数が、ローカル変数である。逆に、｛｝で囲まれた範囲外で宣言された変数が、グローバル変数である。グローバル変数は、あらゆる場所からの参照が可能な変数である。
【０１５７】
したがって、判定部３２０は、変数が宣言されている位置を判定することで、当該変数がグローバル変数であるかローカル変数であるかを判定することができる。
【０１５８】
また、ＪａｖａＳｃｒｉｐｔで記述されたプログラムでは、ｖａｒを付けて変数宣言した場合、当該変数はローカル変数となる。これに対して、何も付けずに変数宣言した場合、当該変数はグローバル変数となる。
【０１５９】
したがって、判定部３２０は、変数宣言されたときにｖａｒが付いているか否かを判定することで、当該変数がグローバル変数であるかローカル変数であるかを判定することができる。
【０１６０】
また、Ｃ言語で記述されたプログラムでは、所定の関数内で宣言された変数は、ローカル変数となる。これに対して、グローバル変数は、任意の関数の外側で定義するとともに、使用する関数の中でも改めて、宣言される必要がある。
【０１６１】
この場合、はっきりとｅｘｔｅｒｎを用いて宣言するか、あるいは、前後関係から暗黙のうちに宣言すればよい。前後関係から暗黙のうちにとは、特定の関数で使われる以前に、プログラムファイル（ソースファイル）の中でグローバル変数の定義がされていれば、使用する関数内でのｅｘｔｅｒｎを用いた宣言は不要である。
【０１６２】
したがって、判定部３２０は、関数の外部で宣言されているとともに、いずれかの関数でｅｘｔｅｒｎを用いて宣言されている場合は、当該変数がグローバル変数であると判定することができる。
【０１６３】
なお、他の高級言語で記述されたプログラムの場合も、判定部３２０は、それぞれのプログラムに基づいて、変数がグローバル変数であるかローカル変数であるかを判定することができる。
【０１６４】
続いて、本発明の実施の形態１に係るプログラム変換装置３００の動作について、図１０を用いて説明する。図１０は、本発明の実施の形態１に係るプログラム変換装置３００の動作の一例を示すフローチャートである。
【０１６５】
まず、抽出部３１０は、入力されたプログラムからメモリアクセス命令を抽出する（Ｓ２１０）。例えば、抽出部は、高級言語で記述されたプログラム（ソースコード）からメモリアクセス命令を抽出し、抽出したメモリアクセス命令をコンパイルすることで、図２に示す“ｌｏａｄ  ｒｍ，（ｒｎ）”などの第１メモリアクセス命令に変換する。
【０１６６】
次に、判定部３２０は、抽出部３１０によって抽出されたメモリアクセス命令が示す変数の種別を判定する（Ｓ２２０）。
【０１６７】
メモリアクセス命令が示す変数がグローバル変数である場合（Ｓ２２０で“グローバル変数”）、変換部３３０は、対応するメモリアクセス命令を変換することで、予測無視メモリアクセス命令の一例である第２メモリアクセス命令を生成する（Ｓ２３０）。変数がグローバル変数である場合は、変換部３３０は、第１メモリアクセス命令を、図２に示す“ｌｏａｄｃｍ  ｒｍ，（ｒｎ）”などの第２メモリアクセス命令に変換する。
【０１６８】
また、メモリアクセス命令が示す変数がローカル変数である場合（Ｓ２２０で“ローカル変数”）、変換部３３０は、対応するメモリアクセス命令をそのまま出力する。
【０１６９】
なお、プログラム変換装置３００は、ソースコードからメモリアクセス命令を抽出し、コンパイルを行う前に、抽出したメモリアクセス命令が示す変数がグローバル変数であるか否かを判定してもよい。グローバル変数であると判定された場合には、対応するメモリアクセス命令を第２メモリアクセス命令に変換し、ローカル変数であると判定された場合には、対応するメモリアクセス命令を第１メモリアクセス命令に変換する。
【０１７０】
以上のように、本発明の実施の形態１に係るキャッシュメモリシステム１０は、ウェイの予測が外れる可能性が高いメモリアクセス命令が解読された場合には、ウェイの予測結果を無視して、キャッシュメモリ１１０の全てのデータ格納部にクロックを供給する。これにより、予測が外れても処理が繰り返されることを防ぐことができる。すなわち、予測ミスの発生を防止することができるので、性能の劣化を抑制することができる。
【０１７１】
また、キャッシュメモリシステム１０は、ウェイの予測が外れる可能性が低いメモリアクセス命令が解読された場合には、ウェイの予測結果に基づいて、予測されたウェイのデータ格納部のみにクロックを供給する。これにより、常に全てのデータ格納部にクロックを供給する場合に比べて、消費電力を抑制することができる。
【０１７２】
なお、本発明の実施の形態１では、第２メモリアクセス命令がプロセッサ部２００で解読された場合には、当該第２メモリアクセス命令に対応するヒット結果を無視したが、ヒット結果を予測アルゴリズムに採用してもよい。
【０１７３】
図１１は、本発明の実施の形態１の変形例に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【０１７４】
図１１の例では、時刻ｔ（ｎ−１）において、第２メモリアクセス命令である“ｌｏａｄ  ｒ１４，（ｒ１５）”がプロセッサ部２００で解読された場合、命令解読部２２０は、共有アクセス信号１５６をキャッシュメモリ装置１００へ出力する。このとき、キャッシュメモリ装置１００では、予測部１２２は、過去の履歴などに基づいてヒットするウェイがウェイＡであると予測する。
【０１７５】
クロック制御部１１３には、Ｈｉｇｈレベルとなった共有アクセス信号１５６が入力される。したがって、上述したように、クロック制御部１１３は、全てのウェイに含まれる全てのデータ格納部にクロックを供給するように、クロック制御信号を出力する。
【０１７６】
そして、ヒット判定部１１４によってウェイＣがヒットしたと判定され、ヒットしたウェイＣを示すキャッシュヒット信号１６２が更新部１２３に入力される。そして、更新部１２３は、ヒットしたウェイＣを示すキャッシュヒット信号１６２を用いて、履歴情報を更新する。
【０１７７】
したがって、時刻ｔ（ｎ）に示すように、次の第１メモリアクセス命令である“ｌｏａｄ  ｒ１６，（ｒ１７）”がプロセッサ部２００で解読された場合、予測部１２２は、ウェイＣを示す情報によって更新された履歴情報に基づいて、ヒットするウェイがウェイＣであると判定している。
【０１７８】
以上のように、本発明の実施の形態１の変形例においては、更新部１２３は、第１メモリアクセス命令及び第２メモリアクセス命令のいずれがプロセッサ部２００で解読された場合であっても、対応するメモリアクセス命令によってヒットしたウェイを示す情報を用いて、履歴情報を更新してもよい。これにより、複数のプログラムのうち単一のプログラムのみが一定期間実行されてヒットするウェイの履歴が単一のプログラムにより決定される場合に、予測の当たる確率を向上させることができる。
【０１７９】
（実施の形態２）
本発明の実施の形態２に係るキャッシュメモリ装置では、クロック制御部が、さらに、第１メモリアクセス命令がプロセッサ部で解読された場合に、複数のウェイに含まれる複数のタグ格納部のうち、ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、第２メモリアクセス命令がプロセッサ部で解読された場合に、複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給することを特徴とする。
【０１８０】
図１２は、本発明の実施の形態２に係るキャッシュメモリ装置４００の構成の一例を示すブロック図である。
【０１８１】
図１２に示すキャッシュメモリ装置４００は、図１に示す実施の形態１に係るキャッシュメモリ装置１００と比較して、タグ格納部群１１１の代わりにタグ格納部群４１１を備え、クロック制御部１１３の代わりにクロック制御部４１３を備える点が異なっている。図１２において、図１に示す実施の形態１と同じ構成要素には同じ参照符号を付し、説明を省略し、異なる点を中心に説明する。
【０１８２】
タグ格納部群４１１は、ｎ個のタグ格納部、すなわち、ウェイの数と同数のタグ格納部を有し、ｎ個のタグ格納部のそれぞれに、複数のタグアドレスを格納することができる。本実施の形態では、ウェイは２個であるので、タグ格納部群４１１は、２個のタグ格納部４１１ａ及び４１１ｂを有する。
【０１８３】
タグ格納部４１１ａ及び４１１ｂには、アドレス１５１が入力される。タグ格納部４１１ａ及び４１１ｂは、アドレス１５１に含まれるセットインデックスに対応するエントリに格納されたタグアドレスを、タグデータ１６０ａ及び１６０ｂとして出力する。
【０１８４】
さらに、タグ格納部群４１１には、クロック制御部４１３からクロック制御信号が入力される。つまり、実施の形態１に示すタグ格納部群１１１では、全てのタグ格納部にクロックが供給されたのに対して、タグ格納部群４１１は、クロック制御部４１３からの制御に基づいて、クロックが供給される。
【０１８５】
クロック制御部４１３は、プロセッサ部２００で解読されたメモリアクセス命令の種別に基づいて、複数のウェイに供給するクロックを制御する。具体的には、クロック制御部４１３は、第１メモリアクセス命令が解読された場合に、複数のウェイに含まれる複数のタグ格納部及び複数のデータ格納部のうち、ウェイ予測部１２０によって予測されたウェイのタグ格納部及びデータ格納部のみにクロックを供給する。
【０１８６】
また、クロック制御部４１３は、第２メモリアクセス命令が解読された場合に、ウェイ予測部１２０による予測結果に関わらず、複数のウェイに含まれる複数のタグ格納部及び複数のデータ格納部のうち、予め定められたウェイのタグ格納部及びデータ格納部にクロックを供給する。具体的には、クロック制御部４１３は、第２メモリアクセス命令が解読された場合に、全てのタグ格納部及び全てのデータ格納部にクロックを供給する。
【０１８７】
図１２に示すように、クロック制御部４１３は、ｎ個のクロック制御信号生成部、すなわち、ウェイの数と同数のクロック制御信号生成部を有する。本実施の形態では、ウェイが２個であるので、クロック制御部４１３は、２個のクロック制御信号生成部４１３ａ及び４１３ｂを有する。
【０１８８】
なお、クロック制御信号生成部４１３ａ及び４１３ｂの動作は、実施の形態１に係るクロック制御信号生成部１１３ａ及び１１３ｂとほぼ同様である。データ格納部群１１２だけでなく、タグ格納部群４１１にもクロック制御信号を出力する点が異なっている。
【０１８９】
具体的には、図１２に示すように、クロック制御信号生成部４１３ａは、共有アクセス信号１５６及びウェイ予測信号１５８ａの少なくとも１つが入力された場合に、クロック制御信号４５９ａをタグ格納部４１１ａとデータ格納部１１２ａとに出力する。同様に、クロック制御信号生成部４１３ｂは、共有アクセス信号１５６及びウェイ予測信号１５８ｂの少なくとも１つが入力された場合に、クロック制御信号４５９ｂをタグ格納部４１１ｂとデータ格納部１１２ｂとに出力する。
【０１９０】
また、第１メモリアクセス命令及び第２メモリアクセス命令については、実施の形態１と同じである。
【０１９１】
続いて、メモリアクセス命令がライト命令（ストア命令）である場合について、説明する。
【０１９２】
図１３は、本発明の実施の形態２の変形例に係るメモリアクセス命令の一例を示す図である。
【０１９３】
“ｓｔｏｒｅ  （ｒｎ），ｒｍ”は、第１メモリアクセス命令の一例であり、ライト命令（ストア命令）であって、複数のプログラム間で排他の領域へのアクセスを意味する命令である。図１２に示す命令解読部２２０は、解読したメモリアクセス命令が“ｓｔｏｒｅ  （ｒｎ），ｒｍ”である場合は、排他アクセス信号１５７を出力する。なお、“ｓｔｏｒｅ  （ｒｎ），ｒｍ”は、従来から使用されている通常のライト命令である。
【０１９４】
“ｓｔｏｒｅｃｍ  （ｒｎ），ｒｍ”は、第２メモリアクセス命令の一例であり、ライト命令（ストア命令）であって、複数のプログラム間で共有の領域へのアクセスを意味する命令である。図１２に示す命令解読部２２０は、解読したメモリアクセス命令が“ｓｔｏｒｅｃｍ  （ｒｎ），ｒｍ”である場合は、共有アクセス信号１５６を出力する。“ｓｔｏｒｅｃｍ  （ｒｎ），ｒｍ”は、本実施の形態に係るプログラム変換装置によって生成される新たなライト命令である。
【０１９５】
なお、“ｓｔｏｒｅ  （ｒｎ），ｒｍ”及び“ｓｔｏｒｅｃｍ  （ｒｎ），ｒｍ”は、“ｒｍ”が示すレジスタに格納されているデータを、“ｒｎ”が示すレジスタに格納されているアドレスが示す、メモリ内の領域に書き込むことを意味するライト命令である。
【０１９６】
実施の形態１と同様に、ライト命令がプロセッサ２１０で実行された場合、キャッシュメモリ装置４００は、ヒットしたウェイ及びエントリが決定されるまで、書き込みデータ１５２をデータ格納部に書き込むことはできない。したがって、データ格納部にクロックを供給するか否かを決定するために、ウェイの予測結果を用いる必要はない。
【０１９７】
これに対して、本発明の実施の形態２に係るキャッシュメモリ装置４００では、タグ格納部にクロックを供給するか否かを決定するのに、ウェイの予測結果を用いることができる。
【０１９８】
図１４は、本発明の実施の形態２の変形例に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
【０１９９】
例えば、時刻ｔ２において、第１メモリアクセス命令である“ｓｔｏｒｅ  （ｒ２），ｒ０”が命令解読部２２０で解読された場合、命令解読部２２０は、排他アクセス信号１５７をキャッシュメモリ装置４００へ出力する。キャッシュメモリ装置４００では、ウェイ予測部１２０が、過去の履歴などに基づいてヒットするウェイがウェイＡであると予測する。そして、ウェイ予測部１２０は、ウェイＡに対応するウェイ予測信号のみ（例えば、ウェイ予測信号１５８ａのみ）をＨｉｇｈレベルとして出力する。
【０２００】
クロック制御部４１３は、ウェイ予測部１２０による予測結果に基づいて、ウェイＡに含まれるタグ格納部のみ（例えば、タグ格納部４１１ａのみ）にクロックを供給する。具体的には、クロック制御部４１３には、Ｈｉｇｈレベルとなったウェイ予測信号１５８ａのみが入力されるので、クロック制御信号生成部４１３ａのみがクロック制御信号４５９ａをタグ格納部群４１１に出力する。
【０２０１】
このようにして、図１４に示すように、第１メモリアクセス命令が命令解読部２２０で解読された場合は、予測ウェイとアクセスタグウェイとが一致する。
【０２０２】
これに対して、例えば、時刻ｔ４において、第２メモリアクセス命令である“ｓｔｏｒｅｃｍ  （ｒ５），ｒ３”が命令解読部２２０で解読された場合、命令解読部２２０は、共有アクセス信号１５６をキャッシュメモリ装置４００へ出力する。キャッシュメモリ装置４００では、ウェイ予測部１２０は、過去の履歴などに基づいてヒットするウェイがウェイＡであると予測する。そして、ウェイ予測部１２０は、ウェイＡに対応するウェイ予測信号のみ（例えば、ウェイ予測信号１５８ａのみ）をＨｉｇｈレベルとして出力する。
【０２０３】
クロック制御部４１３には、Ｈｉｇｈレベルとなった共有アクセス信号１５６が入力される。したがって、上述したように、クロック制御部４１３は、全てのウェイに含まれる全てのタグ格納部にクロックを供給するように、クロック制御信号を出力する。すなわち、クロック制御部４１３は、ウェイ予測部１２０による予測結果には基づかずに、言い換えると、予測結果を無視して、予め定められたタグ格納部にクロックを供給する。
【０２０４】
そして、ヒット判定部１１４は、ウェイＣがヒットしたウェイであると判定し、ウェイＣを示すキャッシュヒット信号１６２を出力する。そして、データ格納部群１１２には、キャッシュヒット信号１６２に基づいて、ウェイＣに含まれるデータ格納部のみにクロックが供給される。
【０２０５】
以上のように、ライト命令（ストア命令）が実行された場合、全てのタグ格納部にクロックを供給することで、ウェイの予測が外れた場合であっても、ミスヒットと判定されることなく、書き込みデータ１５２を書き込むエントリを決定することができる。また、常に全てのタグ格納部にクロックを供給する場合に比べて、第２メモリアクセス命令のように、ウェイの予測が外れる可能性が高い命令が実行された場合のみ、全てのタグ格納部にクロックを供給するので、消費電力の増加を抑制することができる。
【０２０６】
以上の構成により、本発明の実施の形態２に係るキャッシュメモリ装置４００は、プロセッサ部２００から排他アクセス信号１５７が入力された場合は、ウェイ予測部１２０によって予測されたウェイのデータ格納部とタグ格納部とのみにクロックを供給する。また、キャッシュメモリ装置４００は、プロセッサ部２００から共有アクセス信号１５６が入力された場合は、ウェイ予測部１２０による予測結果を無視して全てのデータ格納部とタグ格納部とにクロックを供給する。
【０２０７】
このように、本発明の実施の形態２に係るキャッシュメモリ装置４００は、プロセッサ部２００から入力される信号に基づいて、クロックを供給するデータ格納部及びタグ格納部を制御する。したがって、予測が当たる可能性が高い場合には、予測されたデータ格納部とタグ格納部とだけにクロックを供給することができるので、消費電力の増加を抑制することができる。このとき、予測されなかったウェイについては、データ格納部だけでなくタグ格納部にも、クロックを供給しないので、消費電力をさらに低減することができる。
【０２０８】
また、予測が当たる可能性が低い場合には、全てのデータ格納部及びタグ格納部にクロックを供給することで、予測が外れた場合に、処理が繰り返されるのを防ぐことができるので、レイテンシーの低下を抑制することができ、性能の劣化を抑制することができる。
【０２０９】
以上、本発明に係るキャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を当該実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０２１０】
例えば、上記の実施の形態では、第２メモリアクセス命令がプロセッサ部２００で解読された場合に、予め定められたデータ格納部及び／又はタグ格納部として、全てのデータ格納部及び／又はタグ格納部にクロックを供給する例について説明した。これに対して、全てのデータ格納部及び／又はタグ格納部ではなく、当該第２メモリアクセス命令を含むプログラムを実行するために割り当てられた１つ以上のウェイに含まれる１つ以上のデータ格納部及び／又はタグ格納部にクロックを供給してもよい。
【０２１１】
例えば、複数のプログラムに含まれる複数のスレッドはそれぞれ、実行時に利用するウェイが割り当てられていてもよい。図１５に示す例では、スレッドＡには、ウェイＡ及びウェイＢが割り当てられ、スレッドＢにはウェイＣが、スレッドＤにはウェイＤがそれぞれ割り当てられている。
【０２１２】
図１６は、本発明の実施の形態の変形例に係るキャッシュメモリ装置５００の構成の一例を示す図である。同図に示すように、図１に示すキャッシュメモリ装置１００と比べて、キャッシュメモリ１１０は、クロック制御部１１３の代わりに、クロック制御部５１３を備える。
【０２１３】
クロック制御部５１３は、例えば、図１５に示すようなスレッドとウェイとの対応関係を示すテーブルを参照することで、第２メモリアクセス命令が解読された場合に、当該第２メモリアクセス命令を含むスレッドに割り当てられたウェイにクロックを供給する。図１５の例では、スレッドＡに含まれる第２メモリアクセス命令がプロセッサ部２００で解読された場合は、クロック制御部５１３は、ウェイＡ及びウェイＢに含まれるデータ格納部のみに、クロックを供給する。
【０２１４】
図１６に示すように、クロック制御部５１３は、図１に示す実施の形態１に係るクロック制御部１１３と比較して、新たに、スイッチ５１６ａ及び５１６ｂと、選択部５１７とを備える。
【０２１５】
スイッチ５１６ａ及び５１６ｂは、選択部５１７からの制御信号５６４ａ及び５６４ｂに基づいて、共有アクセス信号１５６をクロック制御信号生成部１１３ａ及び１１３ｂのそれぞれに供給するか否かを決定する。スイッチ５１６ａは、クロック制御信号生成部１１３ａ及びデータ格納部１１２ａに対応する。スイッチ５１６ｂは、クロック制御信号生成部１１３ｂ及びデータ格納部１１２ｂに対応する。
【０２１６】
選択部５１７は、スレッドとウェイとの対応関係を示すテーブルを保持する。選択部５１７は、当該テーブルを参照することで、第２メモリアクセス命令が解読された場合に、第２メモリアクセス命令を含むスレッドに割り当てられたウェイのデータ格納部に対応したスイッチのみをオンするように制御信号を出力する。
【０２１７】
例えば、スレッドＡとウェイＡとが割り当てられている場合において、スレッドＡに含まれる第２メモリアクセス命令が解読された場合は、選択部５１７は、スイッチ５１６ａのみがオンするように制御信号５６４ａを出力する。これにより、スイッチ５１６ａは、共有アクセス信号１５６をクロック制御信号生成部１１３ａに出力するので、クロック制御信号生成部１１３ａは、データ格納部１１２ａにクロックを供給することができる。
【０２１８】
これにより、キャッシュメモリ装置５００が備える全てのデータ格納部にクロックを供給する場合に比べて、消費電力を低減することができる。
【０２１９】
また、ウェイ予測部１２０は、ヒットするウェイとして、複数のウェイを予測してもよい。
【０２２０】
また、図１７に示すように、第２メモリアクセス命令は、ウェイの予測結果を利用しないことを示す属性ビットを含んでいてもよい。図１７は、本発明の実施の形態の変形例に係るメモリアクセス命令の一例を示す図である。
【０２２１】
つまり、プログラム変換装置３００が備える変換部３３０は、判定部３２０によってメモリアクセス命令が示す変数がグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果を利用しないことを示す属性ビットを含む第２メモリアクセス命令に変換してもよい。例えば、属性ビットは、予測結果を利用するか否かを示すフラグに相当する。
【０２２２】
例えば、図１７に示すように、第２メモリアクセス命令を構成する複数のビット（例えば、３２ビット）のうち、１ビットが属性ビットである。当該１ビットが、ウェイ予測部１２０によるウェイの予測結果を利用させないことを示している。
【０２２３】
また、上記の各実施の形態では、第２メモリアクセス命令が解読された場合、ウェイ予測部１２０による予測結果を無視することで、予め定められたデータ格納部にクロックを供給したが、ウェイ予測部１２０による予測結果を、予め定められたウェイが予測されたことを示す予測結果に置き換えてもよい。この場合、クロック制御部１１３は、メモリアクセス命令の種別ではなく、予測結果が示すウェイに含まれるデータ格納部にクロックを供給する。
【０２２４】
例えば、ウェイ予測部１２０において、予測部１２２は、プロセッサ部２００で第２メモリアクセス命令が解読された場合に、共有アクセス信号１５６を受け取り、予め定められたウェイを予測結果として出力する。すなわち、予測部１２２は、共有アクセス信号１５６を受け取った場合、予め定められたウェイ予測信号を出力する。例えば、予測部１２２は、全てのデータ格納部にクロックを供給するように、全てのウェイ予測信号を出力する。
【０２２５】
このように、第２メモリアクセス命令が解読された場合に、例えば全てのウェイが予測されたことを示すダミーの予測結果に、ウェイ予測部による予測結果を置き換えてもよい。
【０２２６】
また、本発明は、上述したように、キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法として実現できるだけではなく、本実施の形態のキャッシュメモリ制御方法及びプログラム変換方法をコンピュータに実行させるためのプログラムとして実現してもよい。また、当該プログラムを記録するコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体として実現してもよい。さらに、当該プログラムを示す情報、データ又は信号として実現してもよい。そして、これらプログラム、情報、データ及び信号は、インターネットなどの通信ネットワークを介して配信されてもよい。
【０２２７】
また、本発明は、キャッシュメモリ装置及びプログラム変換装置を構成する構成要素の一部又は全部を、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）から構成してもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ及びＲＡＭなどを含んで構成されるコンピュータシステムである。
【産業上の利用可能性】
【０２２８】
本発明は、性能の劣化を抑制するとともに、消費電力の増加を抑制することができるという効果を奏し、パーソナルコンピュータ、各種家電機器などのキャッシュメモリを有する機器に利用することができる。
【符号の説明】
【０２２９】
１０  キャッシュメモリシステム
１００、４００、５００  キャッシュメモリ装置
１１０  キャッシュメモリ
１１１、４１１  タグ格納部群
１１１ａ、１１１ｂ、４１１ａ、４１１ｂ  タグ格納部
１１２  データ格納部群
１１２ａ、１１２ｂ  データ格納部
１１３、４１３、５１３  クロック制御部
１１３ａ、１１３ｂ、４１３ａ、４１３ｂ  クロック制御信号生成部
１１４  ヒット判定部
１１５  セレクタ
１２０  ウェイ予測部
１２１  履歴保持部
１２２  予測部
１２３  更新部
１３０  ＴＬＢ
１５１  アドレス
１５２  書き込みデータ
１５３  読み出しデータ
１５４  命令コード
１５５  命令デコード信号
１５６  共有アクセス信号
１５７  排他アクセス信号
１５８ａ、１５８ｂ  ウェイ予測信号
１５９ａ、１５９ｂ、４５９ａ、４５９ｂ  クロック制御信号
１６０ａ、１６０ｂ  タグデータ
１６１ａ、１６１ｂ  データ格納部読み出しデータ
１６２  キャッシュヒット信号
１６３  物理ページ番号
２００  プロセッサ部
２１０  プロセッサ
２２０  命令解読部
２３０  命令キャッシュメモリ
３００  プログラム変換装置
３１０  抽出部
３２０  判定部
３３０  変換部
５１６ａ、５１６ｂ  スイッチ
５１７  選択部
５６４ａ、５６４ｂ  制御信号
【図１】
2011257800.tif 000003
【図２】
2011257800.tif 000004
【図３】
2011257800.tif 000005
【図４】
2011257800.tif 000006
【図５】
2011257800.tif 000007
【図６】
2011257800.tif 000008
【図７】
2011257800.tif 000009
【図８】
2011257800.tif 000010
【図９】
2011257800.tif 000011
【図１０】
2011257800.tif 000012
【図１１】
2011257800.tif 000013
【図１２】
2011257800.tif 000014
【図１３】
2011257800.tif 000015
【図１４】
2011257800.tif 000016
【図１５】
2011257800.tif 000017
【図１６】
2011257800.tif 000018
【図１７】
2011257800.tif 000019